gpt4 book ai didi

java - Hibernate - 修改父对象时对子对象(集合)进行级联修改

转载 作者:行者123 更新时间:2023-12-02 11:42:58 27 4
gpt4 key购买 nike

我正在阅读:Hibernate Documentation Chapter 10.11试图弄清楚 hibernate 的方法是如何工作的。

假设我有一个父对象 Cat,其关联的 Kittens 子对象具有以下映射。

  <set cascade="all" name="Kittens" inverse="true">
<key>
<column name="KittenName" length="36" not-null="true" />
</key>
<one-to-many class=".......model.Kittens" />
</set>

通过这种关联,我希望每当我在应用程序中 load() 一只 Cat 时,删除它的 Kittens 集合并 saveOrUpdate()attachDirty() 在同一个 Hibernate session 期间将其放回到数据库中,关联的 Kittens 集合将被删除,但事实并非如此。刷新期间生效的唯一更改是对 Cat(父)对象的修改。

Note : I am not trying to cascade the deletion of the parent object but cascade the modifications on it .

我在这里遗漏了什么吗?

最佳答案

当一只猫被移除时,也移除所有的小猫;您将需要级联样式 delete-orphan 。默认情况下,这不包含在all中。 .

所以

<set cascade="all, delete-orphan" name="Kittens" inverse="true">

应该可以解决问题。

另一方面,如果您尝试直接在数据库中删除小猫,则实际对象仍将在您的集合中被引用。一旦你冲洗了你的猫, hibernate 就会简单地重新创建小猫。

关于java - Hibernate - 修改父对象时对子对象(集合)进行级联修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48402893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com