休止状態: 同じ ID の複数のオブジェクトによる混乱
問題:
を試みたときHibernate の saveOrUpdate メソッドを使用してオブジェクトを保存または更新すると、例外がスローされます:
org.hibernate.NonUniqueObjectException: 同じ識別子の値を持つ別のオブジェクトがすでにセッションに関連付けられていました
コンテキスト:
この問題は、RoleBean などのオブジェクトが同じトランザクション内で UserBean や GroupBean などの複数のエンティティに割り当てられるときに発生します。これは、オブジェクトに多対多の関係がある場合に発生する可能性があります。
たとえば、指定されたシナリオでは、RoleBean#1 は最初に GroupBean#1 に割り当てられます。同じセッション内で UserBean#1 に追加しようとすると、例外が発生します。
解決策:
例外の原因は、2 つの異なるものが存在することです。セッション内のRoleBeanオブジェクトのインスタンス。 1 つのインスタンスは UserBean に直接関連付けられ、もう 1 つは GroupBean を通じて間接的に関連付けられます。
この問題を解決するには、次のオプションを検討してください:
これらのアプローチのいずれかを実装することで、例外を解決し、同じ ID を持つオブジェクトが適切に処理されるようにすることができます。単一の Hibernate セッション内。
以上がHibernate: 多対多の関係を扱うときに「saveOrUpdate」が「NonUniqueObjectException」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。