解决hibernate删除时的异常

因为关联关系是一对多和多对一的关系,因而在代码中须要删除多的一方的对象时出现了html

deleted object would be re-saved by cascade (remove deleted object from associations)

 

对于这个异常,大概有有一下3中方法session

方法1 删除Set方的cascade:(缺点:子对象和父对象不能进行级联更新,没意义)

方法2 在many-to-one方增长cascade 但值不能是none  (缺点:子对象也级联到父对象,删除子对象会将父对象一并删除,也不可取)spa

方法3(亲测成功,并且很方便),先看下面代码:code

order = (Order) session.get(Order.class, 2);
             
order.getCustormer().getOrders().remove(order);
             
order.setCustormer(null);
             
session.delete(order);

 

order是多的那一方,若是要删除一个order对象,直接调用session.delete()方法确定就会报开头那个对象orm

为了解决这个问题,就能够先获得与该order对象对应的一的那一方(即customer对象),而后先将该order对象从customer对象中删除,而且将该order对象的customer对象设置为null,这样再执行删除时就不会出现那个异常了。htm

 

文章出自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/03/02/2940290.html对象

相关文章
相关标签/搜索