Possible Duplicate:
Spring + Hibernate : a different object with the same identifier value was already associated with the session
我已经使用 hibernateTemplate find by id 从数据库加载了一个对象 X,然后我从该对象中获取了一些属性,并将其添加到另一个相同类型的对象 Y 中,该对象也由相同的 X id 加载。然后当我尝试 saveOrUpdate
对象 Y,hibernate 抛出异常具有相同标识符值的不同对象已与 session 关联,我认为这意味着对象 X 与同一 session 中的该属性关联,因此 Y 不能被保存或更新并影响该属性。
如何从 session 中删除对象 X,使其不再与该属性关联
我尝试使用合并而不是 saveOrUpdate
它工作正常,但它与 saveOrUpdate
相同吗? ?我的意思是我可以依靠它来添加新记录或更新它们吗?
最佳答案
经过多次尝试,我发现使用合并是有效处理此问题的最佳方法,并且要处理要保存的新实例,我认为最好的方法是这样做:
if (X.getId() != null) {
return hibernateTemplate.merge(X);
} else {
hibernateTemplate.saveOrUpdate(X);
}
因此,如果它是要 session 的新实例,则将通过 saveOrUpdate
完成,如果它是同一行的重复实例,则将使用合并进行处理。
关于java - 从 hibernate session 中删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3288838/