1.异常名称:
org.hibernate.NonUniqueObjectException
2.具体信息:
a different object with the same identifier value was already associated with the session: [User#4739]
3.报错解析与解决方法:
简单的说,这个报错含义就是在同一个hibernate的session(会话)中有两个identifier value(标识值)相同的对象。举例说明一下:
public void test(){ User u1 = session.findById(1); User u2 = session.findById(1); session.update(u1); session.update(u2); }
例子只是简单说明一下,变量都未定义。只是想说明一下这个session中有两个相同的对象,然后操作其中以后进行更新保存就会报错。网上百度了大把的这个报错解决方式,大同小异:
a> session.refresh(Object)
b> session.flush()
c> session.merge(Object)
我在我的报错代码中,进行了测试,都没有效果,也许和他们的报错不一样吧!
其实我的报错信息很简单:
在修改对象A后,进行更新之前已经把对象A查询出来了,这个时候session中应该已经存在该对象了。之后更新A的时候就报上述异常。