Java,Hibernate,如何设置Envers,如果只改变一个字段,它将不会创建新版本?

时间:2018-03-14 13:37:15

标签: java hibernate-envers

如标题所示。我有一个包含许多字段的实体,但每次将此实体保存到数据库时,如果唯一更改的是“modificationTimestamp”,则envers会创建另一个版本事件。有没有办法忽略那个领域?但是如果任何其他字段发生变化,它也需要写入db。

1 个答案:

答案 0 :(得分:0)

最简单的方法是将@NotAudited注释添加到模型中的该属性。这意味着该字段将不再用于增量比较,以确定实体是否已被修改,因此将不再触发要添加的审计行。

这也意味着您的审核数据会有一个小的不一致,因为之前添加的条目将包含此modificationTimestamp列中的值,其中添加注释后的行将开始包含 null 值,因为Envers不再跟踪此列。

如果您不需要较旧行中的值,则可以安全地从审计模式中删除该列,如果从审计历史角度来看该值不重要。

如果您需要较旧的值,但审计模式列是以某种方式使用 not-null 约束创建的,则可能需要手动更改架构并允许它插入空值,因为行为的改变。