可能重复:
Hibernate: different object with the same identifier value was already associated with the session
我在我的代码(Spring + Hibernate Web应用程序)中看到,我得到以下异常:
HibernateSystemException: a different object with the same identifier value was already associated with the session
我检查了我的代码并意识到问题是由于我两次获得相同的对象。我将其修改为最简单的情况:
customerDao.getById(customerId);
customerDao.getById(customerId);
上面的代码导致了上面提到的异常,但是我不明白为什么从Hibernate获取两次相同的对象是错误的。这似乎是一个正常的用例。可以检索相同的对象,即通过运行两个不同的查询。为什么我要担心一个查询是否会返回与第二个查询相同的对象?任何人都可以向我解释或指出有关该主题的一些信息来源吗?
P.S。 在应用程序中禁用了Hibernate二级缓存。
当我从:
更改customerDao.getById(customerId)的内容时Customer result = new Customer();
getHibernateTemplate().load(result, customerId);
return result;
到
return getHibernateTemplate().get(Customer.class, customerId);
不再抛出异常。互联网上有很多关于负载和获取的差异的文章,但我没有提到这个案例。任何人都可以对这个话题有所了解吗?