我與inverse="false"
和cascade="all"
有多對一的關係。當我更新父代時,會有一個針對此父代對象和多個更新查詢的更新查詢 - 針對子代集合中的每個子對象都有一個查詢。爲什麼Hibernate在父對象更新時執行多個查詢來更新子對象?
你能告訴我爲什麼有這些問題的孩子?我該如何避免它們?
我與inverse="false"
和cascade="all"
有多對一的關係。當我更新父代時,會有一個針對此父代對象和多個更新查詢的更新查詢 - 針對子代集合中的每個子對象都有一個查詢。爲什麼Hibernate在父對象更新時執行多個查詢來更新子對象?
你能告訴我爲什麼有這些問題的孩子?我該如何避免它們?
想要防止Hibernate
更新子級實體,您應該更改級聯類型,請刪除cascade=all
。
如果您有cascade =「all」,這意味着對父實體的每個操作都將調用對子實體的相同操作。因此,如果您不希望級聯關聯子實體的操作,則必須刪除cascade = all。
但是你應該小心這個配置,因爲如果你沒有級聯堅持(例如)創建的子實體將不會持久,即使它是定期創建的,但你必須明確地調用保存每個子實體。
您可以閱讀更多關於級聯類型on this thread.