【问题标题】:How to commit non-session objects using Hibernate session [duplicate]如何使用 Hibernate 会话提交非会话对象 [重复]
【发布时间】:2012-03-19 00:46:59
【问题描述】:

可能重复:
Hibernate: different object with the same identifier value was already associated with the session

我正在使用 Hibernate 和 Struts 1. 我的 Web 应用程序在一台机器上运行,而我的 Hibernate 代码在另一台机器上运行。我正在使用 Web 服务来访问数据库。我的问题是,当我尝试更新任何对象时,当我通过我的服务方法调用提交时,它会抛出“org.hibernate.NonUniqueObjectException”。

引起:org.hibernate.NonUniqueObjectException:不同的对象 具有相同标识符值的已与 会话:[..emp#2]

我无法找到问题所在,但我认为当我检索对象进行编辑时,它会附加到 Hibernate 会话,然后当我尝试更新时,它会在服务端创建一个新对象,因为我正在反序列化对象,因此可能有两个具有相同标识符的对象。

有没有人知道这可能发生了什么?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    在提交之前,您需要将分离的对象merge 重新放入休眠会话。使用(旧版)HibernateUtil 类,您的代码将类似于:

    final Session session = HibernateUtil.getInstance().getSessionFactory().getCurrentSession();
    // ...
    session.merge(entity);
    

    另见here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-03
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多