我平時父母 - 子女關係一對多:JPA2和hibernate - 爲什麼合併存儲子實體而堅持不存在?
@OneToMany(mappedBy = "mapType", cascade = CascadeType.ALL, orphanRemoval = true)
public List<Child> getChildren() {
return children;
}
我有相當標準的使用情況:
必須刪除persist-這工作正常的孩子。
添加新的兒童通過添加到收藏。這對於已經堅持的父母來說工作得很好,但對於新父母來說不起作用。 EntityManager.merge然而確實堅持與新的孩子的新父母。
爲什麼添加新的孩子不適用於新的父對象?他們肯定是在堅持被調用之前。
順便說一句,我在Hibernate 3.6.6上。
http://stackoverflow.com/questions/4509086/what-is-the-difference-between-persist-and-merge-in-hibernate/4509389#4509389 – NimChimpsky
是的,我已閱讀並理解語義。如果你閱讀我的問題,你會看到我得到不同的行爲持久的子實體,取決於父對象是否是新的。這不是由你的鏈接,或我已閱讀的許多其他文章解釋。 – Will
似乎如果堅持被稱爲_before_設置子實體,級聯工作。 OTOH,如果堅持被稱爲_after_設置子實體,級聯不會發生。這是預期的行爲? – Will