解決a different object with the same identifier value was already associated with the session錯誤 .


這個錯誤一般是發生在往數據庫里存數據的時候,因為在hibernate中同一個session里面有了兩個相同標識,但是是不同實體。

遇到這種情況首先,我們要檢查從前台傳到后台的數據中是否有重復的數據,因為每張表中的主鍵都是唯一的,有的時候可能會傳了相同主鍵的值,所以就會報這樣的錯:a different object with the same identifier value was already associated with the session!!!

上面這種情況是解決最簡單的一種,還有一種情況是在session中存在了兩個相同的標識,但是是不同實體,處理這種情況的時候可以用以下幾種方法:

(PS:轉)

解決方法一:session.clean()

  PS:如果在clean操作后面又進行了saveOrUpdate(object)等改變數據狀態的操作,有可能會報出"Found two representations of same collection"異常。

解決方法二:session.refresh(object)

  PS:當object不是數據庫中已有數據的對象的時候,不能使用session.refresh(object)因為該方法是從hibernate的session中去重新取object,如果session中沒有這個對象,則會報錯所以當你使用saveOrUpdate(object)之前還需要判斷一下。

解決方法三:session.merge(object)

  PS:Hibernate里面自帶的方法,推薦使用。


免責聲明!

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



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