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