【问题标题】:Hibernate NonUniqueObjectException on merge() , update()合并(),更新()上的休眠 NonUniqueObjectException
【发布时间】:2013-05-08 13:54:30
【问题描述】:

我在使用 update() 方法更新对象时遇到此错误

org.springframework.orm.hibernate3.HibernateSystemException:具有相同标识符值的不同对象已与会话关联

当我使用方法 merge() 时出现此错误

org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与会话关联。

请帮助。

【问题讨论】:

  • 对你有好处。你有问题吗?

标签: java spring hibernate


【解决方案1】:

您需要正确实现“hashCode”和“equals”方法,请参阅here。注意不要使用 id 作为唯一的唯一属性 -> 分隔对象 id 和业务键。

【讨论】:

  • 方法已经实现,但我仍然得到错误
  • 我正在尝试使用另一个字段中的 id 更新现有对象。
【解决方案2】:

通常当您尝试更新当前会话已在使用的对象时会导致此问题。例如,如果您尝试更新当前登录用户的用户对象。 要使其工作,您必须创建一个新的休眠会话并使用它来更新您的对象。

User updatedUser = getAnUpdatedUserObject();
Session session2 = getSessionFactory().openSession();
Transaction tx2 = session2.beginTransaction();

session2.saveOrUpdate(updatedUser);

tx2.commit();
session2.close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2023-03-17
    相关资源
    最近更新 更多