gpt4 book ai didi

java - 如何知道是什么让 hibernate 持久化对象变脏了?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:58:17 26 4
gpt4 key购买 nike

我用 hibernate 映射的对象有奇怪的行为。为了知道对象行为异常的原因,我需要知道是什么使该对象变脏。有人可以帮忙给我提示吗?

该对象是 Java/Spring 上下文中的 Java 类。所以我更喜欢针对 Java 平台的答案。

编辑:我想获得对 Hibernate 脏状态的访问权限,以及它如何在附加到 session 的对象上发生变化。我不知道一段代码会有什么帮助。

至于实际问题:在由 Spring TransactionManager 管理的事务中,我对对象进行了一些(读取)查询,但没有对这些对象进行显式保存,它们由 TransactionManager 保存,因为 Hibernate 认为其中一些(和并非所有)都很脏。现在我需要知道为什么 Hibernate 认为这些对象是脏的。

最佳答案

我会使用拦截器。 onFlushDirty 方法获取当前和以前的状态,以便您可以比较它们。实现拦截器接口(interface)并扩展 EmptyInterceptor,覆盖 onFlushDirty。然后使用 configuration.setInterceptor 添加该类的一个实例(Spring 可能要求您以不同的方式执行此操作)。您还可以将拦截器添加到 session 而不是在启动时。

Here is the documentation on interceptors.

关于java - 如何知道是什么让 hibernate 持久化对象变脏了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1139426/

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