【问题标题】:Hibernate merge deleting recordsHibernate 合并删除记录
【发布时间】:2018-03-19 03:16:53
【问题描述】:

Hibernate 正在管理 X 类。我们的代码加载了一个 X 数组,当我通过 update() 提交更改时,无论我是否对其进行了任何更改,都会在 X 的第二个实例上得到可怕的 NonUniqueObjectException。 merge() 不会抛出异常,而是删除我的数组中的所有数组,但只有两个。 ???我搜索了 SO 和其他网站,他们都说 update() 或 saveOrUpdate() 将处理处理,但事实并非如此。不知道是什么导致 merge() 删除任何内容。

【问题讨论】:

  • 您能否添加代码如何合并或更新实体...
  • getHibernateTemplate().getSessionFactory().getCurrentSession().setFlushMode(FlushMode.COMMIT); getHibernateTemplate().merge(entity); getHibernateTemplate().getSessionFactory().getCurrentSession().flush();

标签: hibernate


【解决方案1】:

根据您添加的代码 事务由 Hibernate 自动维护。 任何具体原因 为什么将 FlushMode 设置为 Commit?

Ref link 用于 FlushMode。在您的情况下,它将仅在自动完成的事务提交时调用。

根据link,使用 FlishMode 并不是一个好主意

试试这个 - 我们告诉 session.merge 而不是 hibernatetemplate.merge

Session hibSession = getHibernateTemplate().getSessionFactory().getCurrentSession();
hibSession.merge(myObject);
hibSession.flush();

【讨论】:

  • 谢谢,Ashish。我试试看。
猜你喜欢
  • 2012-12-27
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-05
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多