這個錯誤一般是發生在往數據庫里存數據的時候,因為在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里面自帶的方法,推薦使用。