Hibernate 休眠合并删除记录

Hibernate 休眠合并删除记录,hibernate,Hibernate,Hibernate正在管理类X。我们的代码加载了一个X数组,当我通过update()提交更改时,无论我是否对X的第二个实例做了任何更改,我都会在该实例上得到可怕的UnuniqueObjectException。merge()不会抛出异常,而是删除数组中除两个以外的所有元素???我搜索过SO和其他网站,他们都说update()或saveOrUpdate()将处理处理过程,但事实并非如此。不知道什么会导致merge()删除任何内容。根据您添加的代码 事务由Hibernate自动维护。 为什么要将Fl

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

根据您添加的代码 事务由Hibernate自动维护。 为什么要将FlushMode设置为Commit

参考FlushMode。在您的情况下,它将仅在事务提交时被调用,事务提交是自动完成的

因此,使用FlishMode不是一个好主意

请改为尝试此操作-我们告诉您的是session.merge,而不是hibernatetemplate.merge

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

您能否添加代码,说明如何合并或更新实体…getHibernateTemplate().getSessionFactory().getCurrentSession().setFlushMode(FlushMode.COMMIT);getHibernateTemplate().merge(实体);getHibernateTemplate().getSessionFactory().getCurrentSession().flush();谢谢,阿什。我试试看。