请问Hibernate saveOrUpdate方法删除孩子?

Tom*_*Tom 6 java hibernate

我有一个应用程序通过休眠加载对象,然后将这些对象作为分离的对象传递给另一个层.对这些对象的任何更改都会发送回hibernate层,我会调用saveOrUpdate()这些对象.

saveOrUpdate()如果我在调用之前只是从集合中删除子对象,那么hibernate是否会删除传入对象中集合中包含的一对多关系子对象saveOrUpdate()

如果没有,那么通常如何在使用分离对象的hibernate应用程序中完成?

ska*_*man 5

saveOrUpdate()如果我在调用之前只是从集合中删除子对象,那么hibernate是否会删除传入对象中集合中包含的一对多关系子对象saveOrUpdate()

不,不是默认的.在这种情况下,这种子对象被称为"孤儿",假设某些其他实体也没有对它们的引用.

这将在文档11.11中讨论.传递性持久性:

特殊的级联样式delete-orphan仅适用于一对多关联,并指示该delete()操作应应用于从关联中删除的任何子对象.使用注释没有CascadeType.DELETE-ORPHAN等价物.相反,您可以使用属性orphanRemoval,如例11.4" @OneToManywith orphanRemoval"中所示.如果从@OneToMany集合中删除实体或从关联中取消引用@OneToOne关联实体,则可以将该关联实体标记为删除(如果orphanRemoval设置为true).