hiberante的update失败问题

a different object with the same identifier value was already associated with the session

上面就是今天在调程序的时候抛出的hibernate的bug,在网上搜了很多,但是最终的解决方案并不使用,因为项目中hibernate的一些细节已经被封装了,不能使用session.xxx;

大家可以看一下这个总结:http://www.blogjava.net/amigoxie/archive/2008/01/07/173342.html

 

最后请教别人才得到解决的,原来在hibernate更新的时候是需要与缓存中对象的地址进行对比的,看看是不是同一个对象。一个简单的例子

updateMethod(Object old, Object new)

更新的时候,在hibernate的updateEntity(Object old),这里应该使用缓存中的Object对象,这样才不会发生地址的改变。如果使用new出来的新对象,你会发现其实它与缓存中的对象是不一样的,即使它们的所有属性都相同。关于两者的地址上的差异,可以看对象后面@符合后面的数字。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值