参考问题保存双向多对多我想准确地获得什么被接受的答案解释为不正确:
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
但是在加载时,JPA 怎么知道您打算只让 b 知道 a2 而不是 a1 ?那不应该知道 b 的 a2 呢?
在我的情况下,b 在每种情况下都知道 a1 和 a2 是正确的。
想想父子关系:
- b 是 a1 的父级并且 a1 是 b 的子级(自然)
对我来说,只定义一个方向是错误的:
- b 是 a1 的父级,而不是 a1 是 b 的子级 (???)
要获得公认的答案,我认为我需要两个连接表:
a_has_b:
a1_id, b_id
b_has_a
b_id, a2_id
我错了吗??
- 但是,如何获得“同步”的双向关系(不仅仅是多对多)?
- 标准 JPA 功能是否可行?
- 否则,是否有任何特定的提供者实现?
我认为实施
...
public void addB(A a)
{
getA().add(a);
a.getB().add(this);
}
是一个非常丑陋的黑客......
并且在两侧使用两个单向 OneToMany 在 EclipseLink 2.2.0 中不起作用(不太确定,我目前正在尝试)
谢谢 :)