当前位置:首页 > 数据库 > 数据库

转: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 ob

今天在做项目时,需要删除一个对象,由于关联关系是一对多和多对一的关系,于是在代码中需要删除多的一方的对象时出现了

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


(本文来自互联网,不代表搜站(http://www.ylzx8.cn/)的观点和立场)
本站所有内容来自互联网,若本站收录的信息无意侵犯了贵司版权,请给我们来信(ylzx8cn@163.com),我们会及时处理和回复,谢谢