org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade 解决方案 (网络转载)
2014-10-27 16:07
363 查看
前提是配置了cascade=all,依然报这种错误,其实出现这个错误的大多数情况根本不是像网上的帖子所说的是什么级联删除的问题,而且hibernate session关于实体生命周期操作的原因,这里明确的是,问题不是出在删除这里,如果是单纯的删除操作,是不会出这个问题的,原因在于我们在删除这个对象之后,通过会指定跳转到查询这个对象一的一端的操作上,问题就出现在这里,如果采用osiv模式,删除,查询,整个过程都还没有session的flush和transaction的commit,那么我们本身删除了一个对象,没有反应在数据库中,也没有更新session反正在hibernate的session中,再查询它一的一端对象的时候,便又把它获取了出来,获取了一个已经删除的对象,所以这里发生了冲突,抛出了上面的异常,解决方法很简单,在删除操作中加两行代码:
session.delete(object);
session.flush();
session.evict(object);
这里需要注意的是,采用osvi模式,通常是希望整个请求响应过程不出现异常,才把数据反应在数据库中,但session.flush(),就已经把数据与数据库同步了,所以这里的逻辑应该仔细设计,比如应该把对象实体的删除操作放在整个逻辑的最后等。
session.delete(object);
session.flush();
session.evict(object);
这里需要注意的是,采用osvi模式,通常是希望整个请求响应过程不出现异常,才把数据反应在数据库中,但session.flush(),就已经把数据与数据库同步了,所以这里的逻辑应该仔细设计,比如应该把对象实体的删除操作放在整个逻辑的最后等。
相关文章推荐
- org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade 解决方案
- 解决org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)
- org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade
- org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)这个异常
- org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted o
- 解决org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade
- 转:hibernate删除时的异常 deleted object would be re-saved by cascade (remove deleted ob
- hibernate deleted object would be re-saved by cascade (remove deleted object from associations)的异常
- 解决Hibernate删除异常:deleted object would be re-saved by cascade
- Hibernate:deleted object would be re-saved by cascade (remove deleted object from associations): []
- 解决hibernate 删除异常: deleted object would be re-saved by cascade (remove deleted object from associations)
- 解决hibernate 删除异常:deleted object would be re-saved by cascade
- 解决hibernate 删除异常deleted object would be re-saved by cascade (remove deleted object from association)
- 解决hibernate删除时的异常 deleted object would be re-saved by cascade
- hibernate3的cascade导致deleted object would be re-saved by cascade与 A collection with cascade="all-dele
- 解决hibernate 删除异常: deleted object would be re-saved by cascade (remove deleted ob
- hibernate 删除异常:deleted object would be re-saved by cascade (remove deleted object from
- Hibernate 级联删除异常 deleted object would be re-saved by cascade
- 解决hibernate 删除异常: deleted object would be re-saved by cascade (remove deleted object from associations)
- Hibernate之deleted object would be re-saved by cascade异常 (摘)