org.hibernate.NonUniqueObjectException異常解決方法(2)


 異常:org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session
代碼片段:
注:以下為session打開的狀態
* 我手動構造了一個Photo對象
Photo photo=new Photo();
photo.setId(1);
*然后我用load加載同一ID的photo對象
Photo p=session.load(Photo.class,1);
現在一級緩存里已經有了id為1的p對象
*然后我執行刪除photo對象
session.delete(photo);
當我直行這句刪除的時候拋出了異常,為什么呢?
因為當我執行刪除photo對象的時候,它會去先刪除一級里找有沒有這個photo的id的Photo的對象,這個photo是我手動創建的,它的id為1,那么好,它去一級緩存里剛好找到了為1的Photo類型的對象但是它引用的是p,不是photo,所以異常被拋出,這個異常的意思就是:有兩個標識一樣但不是同一個引用的對象了。所以它無法執行刪除。
*改動代碼
session.delete(p);
測試 通過。
如果你也遇到了同樣的異常,不知所措,你可以用session.clean清一下緩存。呵呵。


注意!

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



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