gpt4 book ai didi

java - NonUniqueObjectException session 不包含对象本身?

转载 作者:行者123 更新时间:2023-11-30 06:29:26 25 4
gpt4 key购买 nike

我有一个非常简单的方法:

public D saveDocument(D document) {
final Session currentSession = getCurrentSession();
System.out.println("Current session contains document: " + currentSession.contains(document));
try {
currentSession.saveOrUpdate(document);
} catch (NonUniqueObjectException e) {
e.printStackTrace();
throw e;
}
return document;
}

这是第二条语句和堆栈跟踪为我打印的内容:

Current session contains document: false org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.innflow.ebtam.model.document.flowexpense.ExpenseDocument#6813]

当我尝试保存 ID 为 6813 的文档时,会发生这种情况。因此 Hibernate 最初告诉我该对象不在 session 中,但当我尝试调用 Session#saveOrUpdate 时,就会发生这种情况。我收到 NonUniqueObjectException

我在这里缺少什么?可能是什么原因?

最佳答案

最可能的情况是您尝试保存的文档已分离。这就是为什么 contains 方法会导致 false,即使 session 中已经存在具有相同 id 的实体。

一旦持久性提供程序尝试附加并保存实体,它就会检查当前 session 中是否已经存在具有该 ID 的实体。

在这种情况下,您应该尝试合并而不是保存:

currentSession.merge(document);

关于java - NonUniqueObjectException session 不包含对象本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46425994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com