Наиболее вероятная причина проблемы, с которой вы сталкиваетесь, заключается в том, что двунаправленная связь не отображается правильно. Фактически, вы объявили две совершенно не связанные ассоциации, а затем заставили их разделить столбец соединения.
Чтобы правильно отобразить двунаправленную ассоциацию «один ко многим», необходимо объявить сторону «один» как обратную сторону следующим образом:
@OneToMany(mappedBy = "parent")
@Fetch(FetchMode.SELECT)
List<Child> children;
Обратите внимание, что в таком случае Сценарий Child
является владельцем ассоциации. Изменения Parent.children
полностью игнорируются.
Поскольку вам кажется, что вы хотите иметь возможность управлять ассоциацией исключительно с помощью Parent.children
, вы, вероятно, захотите сделать Parent
владельцем, удалив вместо этого свойство Child.parent
(таким образом, изменив ассоциацию к однонаправленному).
Обратите внимание, что две вышеуказанные опции являются единственными действительными сопоставлениями. Вы не можете одновременно сделать обе стороны ассоциации владельцем, а в двунаправленной ассоциации «один ко многим» сторона «101» не может быть стороной-владельцем.