转:hibernate删除时的异常 deleted object would be re-saved by cascade (remove deleted ob
2016-01-29 13:32
585 查看
今天在做项目时,需要删除一个对象,由于关联关系是一对多和多对一的关系,于是在代码中需要删除多的一方的对象时出现了
deleted object would be re-saved by cascade (remove deleted object from associations)异常,在各种google、百度后,发现网上大致有几种方法解决这个问题:
方法1 删除Set方的cascade:(缺点:子对象和父对象不能进行级联更新,没意义)
方法2 在many-to-one方增加cascade 但值不能是none (缺点:子对象也级联到父对象,删除子对象会将父对象一并删除,也不可取)
方法3(亲测成功,而且很方便),先看下面代码:
order是多的那一方,如果要删除一个order对象,直接调用getHibernateTemplate().delete(order)方法肯定就会报开头那个对象
为了解决这个问题,就可以先得到与该order对象对应的一的那一方(即customer对象),然后先将该order对象从customer对象中删除,并且将该order对象的customer对象设置为null,这样再执行删除时就不会出现那个异常了。
参考:http://www.cnblogs.com/xiaoluo501395377/archive/2013/03/02/2940290.html#3186025
deleted object would be re-saved by cascade (remove deleted object from associations)异常,在各种google、百度后,发现网上大致有几种方法解决这个问题:
方法1 删除Set方的cascade:(缺点:子对象和父对象不能进行级联更新,没意义)
方法2 在many-to-one方增加cascade 但值不能是none (缺点:子对象也级联到父对象,删除子对象会将父对象一并删除,也不可取)
方法3(亲测成功,而且很方便),先看下面代码:
Order order = getHibernateTemplate().get(Order.class, id); order.getCustormer().getOrders().remove(order); order.setCustormer(null); getHibernateTemplate().delete(order);
order是多的那一方,如果要删除一个order对象,直接调用getHibernateTemplate().delete(order)方法肯定就会报开头那个对象
为了解决这个问题,就可以先得到与该order对象对应的一的那一方(即customer对象),然后先将该order对象从customer对象中删除,并且将该order对象的customer对象设置为null,这样再执行删除时就不会出现那个异常了。
参考:http://www.cnblogs.com/xiaoluo501395377/archive/2013/03/02/2940290.html#3186025
相关文章推荐
- 论文笔记:Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks
- Objective-C MD5 And SHA And HMAC-SHA
- Object-C--->Swift之(九)延迟存储属性
- JSONObject.toBean(JSONObject jsonObject, Class beanClass)时,防止时间类型为系统默认时间
- Objective-C中的Block
- tableView视差滚动
- Swift项目兼容Objective-C问题汇总
- Objective-C语言编写(OC)打僵尸小游戏源码
- 在主线程中慎用WaitForSingleObject (WaitForMultipleObjects)
- Object-C--->Swift之(八)类和结构体
- 浅析Objective-C的copy
- Objective-C Runtime学习笔记
- Objective-C 协议最基本解释
- Objective-C与JavaScript交互的那些事
- Objective-C Runtime 运行时之六:拾遗(转载)
- Objective-C Runtime 运行时之五:协议与分类(转载)
- The Browser Object Model
- Objective-C Runtime 运行时之四:Method Swizzling(转载)
- Objective-C Runtime 运行时之三:方法与消息(转载)
- SQL Server中的sysobjects