通过使用方法update()
更新对象时,我得到了这个错误
org.springframework.orm.hibernate3.HibernateSystemException:具有相同标识符值的另一个对象已与会话关联
当我使用方法merge()时我得到这个错误
org.hibernate.NonUniqueObjectException:具有相同标识符值的其他对象已与会话关联。
请帮忙。
答案 0 :(得分:0)
您需要正确实现'hashCode'和'equals'方法,请参阅here。注意不要将id用作唯一的唯一属性 - >分隔对象ID和业务键。
答案 1 :(得分:0)
通常,当您尝试更新当前会话已在使用的对象时,会导致此问题。例如,如果您尝试更新当前登录用户的User对象。 要使其工作,您必须创建一个新的hibernate会话并使用它来更新您的对象。
User updatedUser = getAnUpdatedUserObject();
Session session2 = getSessionFactory().openSession();
Transaction tx2 = session2.beginTransaction();
session2.saveOrUpdate(updatedUser);
tx2.commit();
session2.close();