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

问题描述 投票:0回答:1

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

java hibernate-envers
1个回答
0
投票

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

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

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

如果您需要较旧的值但是审计模式列是以某种方式使用非空约束创建的,则可能需要手动更改模式并允许它仅仅由于行为的更改而插入空值。

© www.soinside.com 2019 - 2024. All rights reserved.