在我的项目中,有时我需要加载一个对象来编辑它们。 在此之前,我认为,hibernate会话已经关闭。
在保存编辑对象(使用saveOrUpdate
)之前的某个时间,我必须搜索(再次打开会话)数据库中的对象,并且,此搜索返回的对象可能是对象I'我会更新。 (我需要这个对象进行一些验证和其他事情......)
在此之后,当我尝试保存对象时,hibernate说我在会话中有另一个具有相同标识符的对象。
我已经实施了自己的equals
和hashcode
方法,我尝试过做一些事情,比如session.evict(object)
,但是,没有任何作用。
所以,我使用session.merge(object)
而不是session.saveOrUpdate(object)
,并且它有效。
但是,我不确切知道这样做的后果是什么。我可以简单地将saveOrUpdate
替换为merge
,否则我会遇到一些问题?关于这个我还有其他的事情要知道吗?
提前致谢。
答案 0 :(得分:1)
我认为这是What are the differences between Hibernate Session methods saveOrUpdate() and merge()?的重复 还有其他一些问题,确实是非常常见的问题......