Hibernate记录脏实体属性?

3

我正在使用Hibernate作为我的JPA提供程序。

我有一个情况,其中一个实体被标记为脏的,我不确定原因。是否可以打开一个记录器来打印为什么实体被标记为脏?换句话说,是哪些实体属性发生了变化导致其被标记为脏的?

我正在使用SLF4j和logback进行日志记录。到目前为止,我最好的发现是:

<logger name="org.hibernate.persister.entity.AbstractEntityPersister" level="trace" />

这将为我提供像这样的日志记录:

26-Apr-2013 09:24:50.054 [SimpleAsyncTaskExecutor-8] TRACE o.h.p.entity.AbstractEntityPersister - com.example.MyEntity.myEntityProperty is dirty

但它还包括相当多其他的跟踪语句,我不想让它们被记录。

1个回答

1
发现一个可以使用的,但是由于 Hibernate 代码中出现了一个 bug,所以无法使用。
org.hibernate.event.internal.DefaultFlushEntityEventListener.logDirtyProperties(Serializable, int[], EntityPersister)

这种方法基本上就是我正在寻找的,打开org.hibernate.event.internal.DefaultFlushEntityEventListener的跟踪功能影响很小。不幸的是,使用以下方式打开跟踪功能:
<logger name="org.hibernate.event.internal.DefaultFlushEntityEventListener" level="trace" />

这会产生类似于以下日志消息的结果:
26-Apr-2013 09:51:33.370 [SimpleAsyncTaskExecutor-8] TRACE o.h.e.i.DefaultFlushEntityEventListener - Found dirty properties [[com.example.MyEntity#1]] : [Ljava.lang.String;@221c75
26-Apr-2013 09:51:33.370 [SimpleAsyncTaskExecutor-8] TRACE o.h.e.i.DefaultFlushEntityEventListener - Updating entity: [com.example.MyEntity#1]

问题在于[Ljava.lang.String;@221c75应该是属性名称列表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接