org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread---------程序報錯


今天遇到了這個問題:

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:……

找其原因是因為同一個object,如一個person在seession里保存了一份,而增加的別的object,如company的時候,由於做了關聯關系,從數據庫里又get了一個person,而這個person和seession里的person是同一個,把get出來的person   set 到了company里,像這樣,compnay.setPerson(person).在增加company的時候就出現了這個錯誤。

網上查了一下,在增加object時,先做一個這樣的操作,說是把相同的object合並一下:

object = session.merge(object);

然后再保存

session.save(object);

我試了試,確實可以解決。

但因為我的操作中,在增加之后還有一個修改的操作,增加時是成功了,但在修改的時候就又出新的錯了,所以我最后的解決辦法是:

用程序來判斷,在拿person的時候,session里有就從session里拿,沒有再get出來,最后再保存company,就沒問題了。

 

也可以在action 中判斷 sessiion中是不是已經存在此對象,如果存在,就不要去數據庫中再拿了,或者拿出來之后判斷此對象和session中是否一致,如果一致就用Session 中的就可以了

 

 

 

 

  轉載於:http://blog.csdn.net/xinmashang/article/category/1120644


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com