ссылаясь на вопрос Сохранение двунаправленной 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
Но как при загрузке JPA узнает, что вы намеревались сообщить b только о a2, а не a1?а как насчет a2, который не должен знать о b?
, в моем случае правильно, что 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
я не прав ??
- однако, как получить "синхронизированное" двунаправленное отношение (не только ManyToMany)?
- возможно ли это с помощью стандартных функций JPA?
- в противном случае, есть какая-то конкретная реализация провайдера?
Я думаю, что реализация
...
public void addB(A a)
{
getA().add(a);
a.getB().add(this);
}
- это действительно уродливый хак ...
ииспользование двух однонаправленных OneToMany с обеих сторон не работает в EclipseLink 2.2.0 (не уверен, я сейчас пытаюсь)
thx:)