当我想从数据库中删除对象时出错。错误是:
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
为什么会这样?
提前致谢!
答案 0 :(得分:4)
如果对象已经与会话关联的对象与您尝试与会话关联的id(主键)相同,则抛出NonUniqueObjectException。
这通常与删除method
本身无关,而更多地与调用删除的上下文有关
检查调用删除的位置。检查调用delete的位置是否存在任何可能的重复对象。
This question也可以提供帮助。
答案 1 :(得分:0)
此错误表示您在同一会话中多次加载了同一对象(此处同样意味着两个对象具有相同的标识符值)。它与数据库中的唯一性无关。