gpt4 book ai didi

hibernate - 调试 Hibernate session /事务错误的好主意?

转载 作者:行者123 更新时间:2023-12-04 00:46:53 25 4
gpt4 key购买 nike

我已经使用 Hibernate 一段时间了,并且已经习惯了大多数常见的错误消息。大多数人直接指出了这个问题,但我一直遇到这个问题:

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session

我理解错误( session 有两个具有相同 ID 的不同对象),但我真的不知道调试代码以查找问题根源的好方法。通常,我会查看我当前正在更改的代码并查找加载一个对象并手动创建另一个对象的位置,希望能在我的逻辑中找到一个简单的错误。但是,我目前正在使用我没有编写、不熟悉且没有文档的代码集。唯一能想到的解决办法就是逐行翻代码,希望能找出错误。您知道调试此错误的更好方法吗?

此外,我得到的确切错误来自对 saveOrUpdate() 的调用。 ,这让我怀疑它是否在调用 save()什么时候应该打电话 update() .有什么方法可以查看 Hibernate 在当前 Session 中的对象以进行调试吗?

最佳答案

saveOrUpdate电话update如果分离的实体已经有一个 ID。 update然后尝试将给定的分离实体附加到 session 。由于 session 中只能有一个给定实体的实例,如果您已经在 session 中加载了实体(使用 loadget 或查询) saveOrUpdate被调用,你会得到这个异常。
saveOrUpdate通常应该是打开 session 后要做的第一件事。如果您必须在更新之前加载实体,您应该使用 merge .我通常更喜欢使用 merge在所有情况下,因为它不太容易出错。

您可以使用 session.getStatistics().getEntityKeys() 了解 session 中的内容。 .

关于hibernate - 调试 Hibernate session /事务错误的好主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7933129/

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