【发布时间】:2012-06-21 14:27:19
【问题描述】:
我们正在使用 Hibernate Envers 进行日志记录,但需要在我们正在跟踪历史记录的对象上设置事件类型。该属性是必需的,因此我们想在每次未设置 lastEvent 时将其放入 null。
所以我们尝试用@PrePersist设置属性
@PrePersist
public void checkIfLastEventWasModified() {
if (!lastEventModified) {
lastEvent = null;
}
}
但显然hibernate认为这些拦截器将对象标记为脏或不脏。所以当这段代码在脏检查上运行时,lastEventModified 仍然是false 并且每次都将lastEvent 设置为null,即使对象上没有任何变化。
我们也尝试使用 Hibernate 的 EventListener,但它们在事务之外运行,我们可以设置属性,但它们没有保存到数据库中。
感觉这两种解决方案都不对,但我不知道如何以最好的方式解决这个问题。
【问题讨论】:
标签: hibernate hibernate-envers