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

Jav*_*ava 5 java hibernate

我正在List使用 hibernate 保存 a ,但它会引发以下异常:

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码如下,但我不知道为什么它会引发异常:

public void save(List<UserItem> list)
{
    //getHibernateTemplate().saveOrUpdateAll(list);

    //getHibernateTemplate().deleteAll(list);
    sessFactory = getHibernateTemplate().getSessionFactory();
    Session session = sessFactory.getCurrentSession();
    for (UserItem bean : list) {
        session.saveOrUpdate(bean);
    }
}
Run Code Online (Sandbox Code Playgroud)

正确的保存方法是什么List

Yag*_*ola 1

此错误的主要原因是,在您的列表中存在具有相同主键的对象,这意味着两个对象具有相同的主键,但它们不是相同的对象实例。

我建议您迭代列表并打印主键值,并找出是否有任何对象具有相同的主键值。只需将 print 函数放入 for 循环中,即可在调用 line 之前打印每个对象的主键值session.saveOrUpdate(bean);