0
例如我有以下兩個實體類有一個一對多的關係:如何有效地合併@OneToMany關係?
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
。
這個問題令我感到困惑,因爲很長一段時間退出,任何幫助我的人都非常感謝!
是否有任何JPA API而不是Hibernate特定的API實現相同?至少'EntityManager.merge'不起作用。 –
合併操作會查看第一級緩存中是否存在類似對象,如果找到則返回對象的合併副本或將此對象添加到第一級緩存中並返回它......它不會執行任何級聯。 –