1 回答

TA貢獻(xiàn)4條經(jīng)驗(yàn) 獲得超0個(gè)贊
1、a different object with the same identifier value was already associated with the session。
錯(cuò)誤原因:在hibernate中同一個(gè)session里面有了兩個(gè)相同標(biāo)識(shí)但是是不同實(shí)體。
解決方法一:session.clean()
PS:如果在clean操作后面又進(jìn)行了saveOrUpdate(object)等改變數(shù)據(jù)狀態(tài)的操作,有可能會(huì)報(bào)出"Found two representations of same collection"異常。
解決方法二:session.refresh(object)
PS:當(dāng)object不是數(shù)據(jù)庫中已有數(shù)據(jù)的對(duì)象的時(shí)候,不能使用session.refresh(object)因?yàn)樵摲椒ㄊ菑膆ibernate的session中去重新取object,如果session中沒有這個(gè)對(duì)象,則會(huì)報(bào)錯(cuò)所以當(dāng)你使用saveOrUpdate(object)之前還需要判斷一下。
解決方法三:session.merge(object)
PS:Hibernate里面自帶的方法,推薦使用。
2、Found two representations of same collection
錯(cuò)誤原因:見1。
解決方法:session.merge(object)
以上兩中異常經(jīng)常出現(xiàn)在一對(duì)多映射和多對(duì)多映射中
添加回答
舉報(bào)