| 异 常 信 息 库 收 集 大 全 | ||
| 异常信息 | 原因 | 解决办法 |
| org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:[com.fatkun.dao.hibernate.User#12] | 问题:这个著名的托管态update更新异常;几乎所有搞过OrMapping持久化程序的开发者都多多少少碰到过这个异常. 这个异常通常发生在一个session 内对同一个数据库对象生成了多个(经常是load(id)/get(id)一个,又new+setId(id)一个),然后又对其进行了update()或者save() . 从业务逻辑的角度,经常发生在修改/更新的操作中 |
解决办法:
merge()会用"拷贝状态copy the state",也就是属性赋值的直接方法,完成相同id对象的更新,实际就是把内容克隆过去. 如果是一个新的对象实例,merge()实际就等同于save()和persist() 但与save()和persist()不同,merge()完成后,其操作的对象是托管态. |
浙公网安备 33010602011771号