org.hibernate.NonUniqueObjectException

时间:2011-06-29 09:37:41

标签: hibernate postgresql java-ee

当我想从数据库中删除对象时出错。错误是:

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.cartif.database.ApplicationField#asd]

要删除我做的对象:

public static void delete(Object o){
    if(session == null) createSession();
    Transaction tx = session.beginTransaction();
    tx.begin();
    session.delete(o);
    tx.commit();
}

当我用一个对象调用这个方法时,我得到了错误。如果我调试应用程序,则会在tx.begin()中抛出异常;线。

在数据库中,这个对象是唯一的,正如我在列中所示:

         name                   deviceid
         "asd"                     1
"ElectricalConsumption"            1
       "Energy"                    1

为什么会这样?

提前致谢!

2 个答案:

答案 0 :(得分:4)

如果对象已经与会话关联的对象与您尝试与会话关联的id(主键)相同,则抛出NonUniqueObjectException。

这通常与删除method本身无关,而更多地与调用删除的上下文有关

检查调用删除的位置。检查调用delete的位置是否存在任何可能的重复对象。

This question也可以提供帮助。

答案 1 :(得分:0)

此错误表示您在同一会话中多次加载了同一对象(此处同样意味着两个对象具有相同的标识符值)。它与数据库中的唯一性无关。