Например, у меня есть следующие два класса сущностей с отношением один ко многим:
public class A implements Serializable {
...
@OneToMany(mappedBy = "a", cascade = CascadeType.ALL)
private List<B> bs;
...
}
public class B implements Serializable {
...
@ManyToOne
private A a;
...
}
Предположим, у меня есть экземпляр A
с именем a
и a.bs == [b1, b2, b3]
. Теперь я хочу удалить b1
из и добавить b4
в отношение, чтобы a.bs == [b2, b3, b4]
и b1.a == null
.
Я попробовал em.merge(a)
после выполнения a.setBs(b2, b3, b4)
, но это приведет к a.bs == [b1, b2, b3, b4]
, если я не сделаю явное b1.setA(null)
. Однако это может привести к усложнению, если a.bs
сильно изменится, и если A
имеет больше связей «один ко многим» с другими классами сущностей. Установка orphanRemoval = true
также не является решением, потому что я просто хочу установить b1.a = null
вместо удаления b1
.
Эта проблема уже давно ставит меня в тупик, и всем, кто мне помогает, очень признателен!