Hibernate Envers - 获取已更改的字段

20

我有一个相当复杂的数据库结构需要进行审核。目前我正在使用Envers来记录更改了哪些对象及其更改内容,效果非常好!

现在我想在用户界面上显示一些审计信息。由于对象/表相当复杂,因此我正在寻找一种查看审计中已更改字段的方法。目前,Envers存储每个对象快照,并带有修订号。我可以查看每个对象的修订版本,然后手动查询以查看更改的内容,但我想知道是否有一种方法可以让Envers存储哪些字段已更改。这可能吗?我在2011年找到了此链接,它建议手动检查每个对象字段。我关心的问题在于速度。我有很多相关的对象,但只更改了一个字段。我将不得不查询很多字段才能找到已更改的那个。

是否有可能存储已更改的字段?

谢谢

编辑

我应该说我正在使用REVCHANGES表,所以我可以查看在什么修订版本中发生了什么变化,但这仅限于实体级别而不是字段级别。


3
对此点赞。我们目前使用旧的onPostUpdate监听器来进行差异比较,并在更新时记录差异到表中。理想情况下,Envers查询可以告诉我们:1. 发生了哪些变化;2. 进一步加分:变化从何而来,变化后变成了什么。 - ndtreviv
1个回答

10

10
问题在于据我所知,没有办法通过编程方式检查这些信息。您只能在审计查询中使用它。这有助于限制引入的修订版本数量,但对于合理显示发生了什么的日志毫无帮助。如果我正确理解原始帖子,并且对于我的问题,我需要一种在加载修订版本后访问这些标记的方法,以便可以合理地向用户展示变更内容。否则,日志是无用的,因为花费太长时间去弄清楚发生了什么。 - user3402489

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