关于hibernate中使用all-delete-orphan的用法

来源:互联网 发布:2015全国人口普查数据 编辑:程序博客网 时间:2024/06/15 22:51

比如onetomany
hibernate设置cascade="all"的话,那么在进行联机操作的时候,如果把一端设置成inverse="false",比如one的一方,那么many一方的与one一方失去关联关系的数据不会被删除掉,而是将关联外键设置为null,出现了孤立的数据!解决办法就是设置cascade="all-delete-orphan"
然而这种简单的设置,会出现问题
org.springframework.orm.hibernate3.HibernateSystemException: Acollection with cascade="all-delete-orphan" was no longer referenced bythe owning entity instance: xxx.Aaa.bbbList; nested exception isorg.hibernate.HibernateException: A collection withcascade="all-delete-orphan" was no longer referenced by the owningentity instance: xxx.Aaa.bbbList
Caused by: org.hibernate.HibernateException: A collection withcascade="all-delete-orphan" was no longer referenced by the owningentity instance: xxx.Aaa.bbbList

参考了http://hi.baidu.com/ekou/blog/item/aa89e80e8df9ece436d122b4.html帖子,知道如下办法可以解决
1 在实体中把setBbbList方法设置成私有private
2 在实体中增加如下方法

3 设置cascade="all-delete-orphan"
4 在dao中