1

私は2つのオブジェクトを持っています。手配と関係者。Arrangement と InvolvedParty の間には関連付けがあります。

最初のアレンジメントを作成し、それに InvolvedParty をアタッチすると、永続化中に問題はありません。2 番目のアレンジメントを作成し、以前に保存した InvolvedParty をデータベースから取得して 2 番目のアレンジメントにアタッチすると、永続化が機能しません。

これはエラーです: [20/09/12 9:53:40:998 CEST] 00000020 RegisteredSyn E WTRN0074E: before_completion 同期操作から例外がキャッチされました: org.apache.openjpa.persistence.EntityExistsException: 切り離されたオブジェクト「com. xxx.crs.model.involvedparty.InvolvedParty-com.xxx.crs.model.involvedparty.InvolvedParty-101". これが新しいインスタンスである場合は、永続化するときにすべての versino および/または自動生成された主キー フィールドが null/default であることを確認してください。失敗したオブジェクト: com.xxx.crs.model.involvedparty.InvolvedParty-com.xxx.crs.model.involvedparty.InvolvedParty-101

今、私は何をしなければなりませんか?アレンジメントは新しいオブジェクトなので、それを維持する必要があると考えています。しかし、Arrangement の項目は InvolvedParty で、これは切り離されたオブジェクトなので、マージを行う必要がありますか? 矛盾している気がしますが。

4

1 に答える 1

1

アレンジメントを永続化するために使用するのと同じトランザクションで、データベースから既存の InvolvedParty をフェッチするようにしてください。これらの操作を 2 つの別個の操作で実行すると、最初のトランザクションが完了すると永続化コンテキストが終了し、OpenJPA は InvolvedParty を切り離されたオブジェクトとして扱います。

詳しくは、OpenJPA マニュアルのPersistence Contextを参照してください。

于 2012-09-22T05:46:52.293 に答える