解決hibernate刪除時的異常 deleted object would be re-saved by cascade (remove deleted object from associa


今天在做項目時,需要刪除一個對象,由於關聯關系是一對多和多對一的關系,於是在代碼中需要刪除多的一方的對象時出現了

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) 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,這樣再執行刪除時就不會出現那個異常了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM