私はJPAが期待通りに動作しないことを認識しています。セッション内で単一のエンティティの複数のインスタンスが終了することがよくあります。ここで Java JPA/Hibernate:セッション内のエンティティの複数インスタンスを回避するにはどうすればよいですか?
は、研究のケースです:親は、単一の方法では@OneToManyにマッピングされた子のコレクションを持っています
- 親P エンティティ
- 負荷コレクションのインスタンスを取得します親子Pを持つ最適化されたJPAクエリを持つ特定の子を見つける:Child C = dao.getSpecificChild(P)
ここでは、Cが既にロードされている2つのインスタンス(C1またはC2)の1つであると考えます。私は、JPAが現在のセッションで既に存在するインスタンスをチェックすると思っていました。 しかし、JPAはCの新しいインスタンスをロードします(C1またはC2のどちらの場合でも問題ありません)。
だから私はC.
の2つの異なるインスタンスで終わるという私の質問は:これは正常な動作ですか? そうであれば、セッション内のエンティティインスタンスをどのように調整できますか?
歓声
親P&dao.getSpecificChild(P)のインスタンスが同一または異なるエンティティマネージャーを使用してフェッチされます –