質問を参照する双方向のManyToManyを保存する私は、受け入れられた答えが間違っていると説明したものを正確に取得したい:
A a1 = new A();
A a2 = new A();
B b = new B();
a1.getB().add(b);
b.getA().add(a2);
この状態が持続する可能性がある場合、結合テーブルに次のエントリが作成されます。
a1_id, b_id
a2_id, b_id
しかし、ロード時に、 a1 ではなく a2 についてのみ b に通知するつもりだったことを JPA はどのようにして知るのでしょうか? b について知ってはならない a2 はどうですか?
私の場合、すべての状況で b が a1 と a2 について知っていることは正しいです。
親子関係を考える:
- b は a1 の親であり、かつ a1 は b の子です (当然)
私にとって、方向を 1 つだけ定義するのは誤りです。
- b は a1 の親であり、かつ a1 は b の子ではありません (???)
受け入れられた答えが説明しているものを取得するには、2つの結合テーブルが必要だと思います:
a_has_b:
a1_id, b_id
b_has_a
b_id, a2_id
私が間違っている??
- ただし、「同期された」双方向の関係 (ManyToMany だけでなく) を取得する方法は?
- 標準のJPA機能で可能ですか?
- それ以外の場合、特定のプロバイダーの実装はありますか?
実装していると思います
...
public void addB(A a)
{
getA().add(a);
a.getB().add(this);
}
本当に醜いハックです...
両側で2つの単方向OneToManyを使用しても、EclipseLink 2.2.0では機能しません(よくわかりません、現在試しています)
どうも :)