解決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對象

相關文章
相關標籤/搜索