Hibernate 疑難異常及處理
一、a different object with the same identifier value was already associated with the session。
錯誤緣由:在hibernate中同一個session裏面有了兩個相同標識可是是不一樣實體。
解決方法一: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裏面自帶的方法,推薦使用。
二、Found two representations of same collection
錯誤緣由:見1。
解決方法:session.merge(object)
以上兩中異常常常出如今一對多映射和多對多映射中數據庫