解决hibernate 删除异常: deleted object would be re-saved by cascade (remove deleted ob
来源:互联网 发布:菲尔杰克逊知乎 编辑:程序博客网 时间:2024/05/16 09:52
在hibernate 删除关联时会出现deleted object would be re-saved by cascade (remove deleted object from associations)的异常,现在网络上解决这个问题的,无非以下这几种
方法1 删除Set方的cascade:(缺点:子对象和父对象不能进行级联更新,没意义)
方法2 解决关联关系后,再删除
onside.getManys().remove(thisMany); //在所关联的一方的set中移走当前要删除的对象
thisMany.setOne(null); //设置所对应的一方为空,解除它们之间的关系
manyDao.delete(thisMany);
方法3 在many-to-one方增加cascade 但值不能是none (缺点:子对象也级联到父对象,难得删除一个学生要把老师也删除?)
方法4 现在我研究出来第四种,更加简单快捷
直接把子对象关联的父对象setNull,然后保存子对象,然后删除子对象,具体看代码
方法1 删除Set方的cascade:(缺点:子对象和父对象不能进行级联更新,没意义)
方法2 解决关联关系后,再删除
onside.getManys().remove(thisMany); //在所关联的一方的set中移走当前要删除的对象
thisMany.setOne(null); //设置所对应的一方为空,解除它们之间的关系
manyDao.delete(thisMany);
方法3 在many-to-one方增加cascade 但值不能是none (缺点:子对象也级联到父对象,难得删除一个学生要把老师也删除?)
方法4 现在我研究出来第四种,更加简单快捷
直接把子对象关联的父对象setNull,然后保存子对象,然后删除子对象,具体看代码
- thisMany.setOne(null);
- Service.update(thisMany);
- Service.delete(thisMany);
下边为另一个的博客:
解决办法:
方法1 删除Set方的cascade
方法2 解决关联关系后,再删除 :
方法3 在many-to-one方增加cascade 但值不能是none
以one-To-many为例:
1.如果Many端存在于One端的集合中,直接删除Many,就会抛出"deleted object would be re-saved by
cascade"的异常,解决办法是在One端的集合中先删除Many端(先把他们之间的联系割断),然后再在Hibernate
中删除Many端。
但在JDBC下直接删除Many端是可以的。
2.如果直接删除One端:
A.如果One端中没有设置Cascade为delete或者all,就会抛出“Cannot delete or update a parent row: a
foreign key constraint fails”的异常。在JDBC下也是不行的(在建表时设置 ON DELETE CASCADE除外),因
为Hibernate只是把JDBC下的异常封装而已。
B.如果One端中设置Cascade为delete或者all,删除的时候就会把所有Many端都删除。
其他参考:
在删除的方法中加入这样几句代码就可以了
Orders od=(Orders)session.load(Orders.class,item.getOrderId());
od.getOrderItems().remove(item);
- 解决hibernate 删除异常: deleted object would be re-saved by cascade (remove deleted ob
- 转:hibernate删除时的异常 deleted object would be re-saved by cascade (remove deleted ob
- 转: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 (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 (remove deleted object from associations)
- 解决hibernate删除时的异常 deleted object would be re-saved by cascade (remove deleted object from associa
- 解决hibernate 删除异常deleted object would be re-saved by cascade (remove deleted object from association)
- 解决hibernate删除时的异常 deleted object would be re-saved by cascade (remove deleted object from associa
- 解决hibernate 删除异常: deleted object would be re-saved by cascade (remove deleted object from associatio
- 解决hibernate 删除异常: deleted object would be re-saved by cascade (remove deleted object from associatio
- 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
- 异常: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): []
- org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)这个异常
- Cookie与session的区别与联系
- source insight 3.5,空格、斜体如何去掉
- 考虑翻译oracle 的bbed介绍文档<Disassembling the Oracle Data Block>
- 2013-01-13
- Lambda- anonymous functions
- 解决hibernate 删除异常: deleted object would be re-saved by cascade (remove deleted ob
- 如何创建快捷方式
- 莫问我是谁
- nfs:server is not responding,still trying原因与解决方案
- win7 热点上网
- 再谈C++类的构造函数
- 内存地址 B800:0000H
- Python常见文件操作的函数示例
- java多态与动态绑定例子