org.hibernate.NonUniqueObjectException-a different object with the same identifier value was already

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的时候就报上述异常。

猜你喜欢

转载自blog.csdn.net/ls0111/article/details/79917882