解决hibernate删除时的异常
由于关联关系是一对多和多对一的关系,于是在代码中需要删除多的一方的对象时出现了
deleted object would be re-saved by cascade (remove deleted object from associations)
对于这个异常,大概有有一下3中方法
方法1 删除Set方的cascade:(缺点:子对象和父对象不能进行级联更新,没意义)
方法2 在many-to-one方增加cascade 但值不能是none (缺点:子对象也级联到父对象,删除子对象会将父对象一并删除,也不可取)
方法3(亲测成功,而且很方便),先看下面代码:
order = (Order) session.get(Order.class, 2); order.getCustormer().getOrders().remove(order); order.setCustormer(null); session.delete(order);
order是多的那一方,如果要删除一个order对象,直接调用session.delete()方法肯定就会报开头那个对象
为了解决这个问题,就可以先得到与该order对象对应的一的那一方(即customer对象),然后先将该order对象从customer对象中删除,并且将该order对象的customer对象设置为null,这样再执行删除时就不会出现那个异常了。
文章出自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/03/02/2940290.html
作者:码农小陈
文中书写有误之处,欢迎批评指正。
欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
-------------------------------------------
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个 [推荐]哦,博主在此感谢!
关注我的公众号《码农小陈》 更多精彩内容等着你