关于hibernate中使用all-delete-orphan的用法
2009-03-10 13:05
309 查看
比如onetomany
hibernate设置cascade="all"的话,那么在进行联机操作的时候,如果把一端设置成inverse="false",比如one的一
方,那么many一方的与one一方失去关联关系的数据不会被删除掉,而是将关联外键设置为null,出现了孤立的数据!解决办法就是设置
cascade="all-delete-orphan"
然而这种简单的设置,会出现问题
org.springframework.orm.hibernate3.HibernateSystemException: A
collection with cascade="all-delete-orphan" was no longer referenced by
the owning entity instance: xxx.Aaa.bbbList; nested exception is
org.hibernate.HibernateException: A collection with
cascade="all-delete-orphan" was no longer referenced by the owning
entity instance: xxx.Aaa.bbbList
Caused by: org.hibernate.HibernateException: A collection with
cascade="all-delete-orphan" was no longer referenced by the owning
entity instance: xxx.Aaa.bbbList
参考了http://hi.baidu.com/ekou/blog/item/aa89e80e8df9ece436d122b4.html帖子,知道如下办法可以解决
1 在实体中把setBbbList方法设置成私有private
2 在实体中增加如下方法
3 设置cascade="all-delete-orphan"
4 在dao中
hibernate设置cascade="all"的话,那么在进行联机操作的时候,如果把一端设置成inverse="false",比如one的一
方,那么many一方的与one一方失去关联关系的数据不会被删除掉,而是将关联外键设置为null,出现了孤立的数据!解决办法就是设置
cascade="all-delete-orphan"
然而这种简单的设置,会出现问题
org.springframework.orm.hibernate3.HibernateSystemException: A
collection with cascade="all-delete-orphan" was no longer referenced by
the owning entity instance: xxx.Aaa.bbbList; nested exception is
org.hibernate.HibernateException: A collection with
cascade="all-delete-orphan" was no longer referenced by the owning
entity instance: xxx.Aaa.bbbList
Caused by: org.hibernate.HibernateException: A collection with
cascade="all-delete-orphan" was no longer referenced by the owning
entity instance: xxx.Aaa.bbbList
参考了http://hi.baidu.com/ekou/blog/item/aa89e80e8df9ece436d122b4.html帖子,知道如下办法可以解决
1 在实体中把setBbbList方法设置成私有private
2 在实体中增加如下方法
public void addBbbList(Bbb b) { getBbbList().add(b); b.setAaa(this); }
3 设置cascade="all-delete-orphan"
4 在dao中
DAO dao= (DAO) BeanFactory.getBean("dao"); Aaa a = dao.getAaaById(id); a.getBbbList().clear(); a.addBbbList(b1); a.addBbbList(b2); a.addBbbList(b3); dao.update(a);
相关文章推荐
- 晕,hibernate 的 merge和cascade="all-delete-orphan"要慎重合在一起使用
- 晕,hibernate 的 merge和cascade="all-delete-orphan"要慎重合在一起使用
- hibernate cascade属性 all-delete-orphan
- Hibernate all-delete-orphan[转]
- HibernateException - A collection with cascade="all-delete-orphan" was no longer referenced by the o
- 关于 all-delete-orphan
- Hibernate中cascade为all-delete-orphan与all的区别
- hibernate cascade="all-delete-orphan"(所有-删除-孤儿)释疑
- HIbernate级联删除(hibernate 双向一对多中 主表设置cascade="all-delete-orphan",在save时出现
- Hibernate all-delete-orphan
- org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance:
- org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance:
- Hibernate中cascade为all-delete-orphan使用情况补充
- 关于Hibernate中 @ForceDiscriminator/@DiscriminatorOptions(force=true)的使用
- delete和all-delete-orphan在进行删除操作时的不同
- Hibernate逍遥游记-第5章映射一对多-02双向(<set>、<key>、<one-to-many>、inverse、cascade="all-delete-orphan")
- all-delete-orphan
- 关于hibernate,JPA使用过程中的一些坑
- hibernate,hql与sql的缓存使用 setResultTransformer的用法
- 关于hibernate查询,RowMapper的使用小结