2013-01-02 44 views
13

我有一个相当复杂的数据库结构,我试图审计。目前我有Envers正在运行,它审核对每个对象所做的更改。这真的很好!Hibernate Envers - 获取已更改的字段

我现在想在UI上显示一些审计信息。对象/表格变得非常复杂,所以我正在寻找一种方法来查看审核中哪些字段发生了变化。目前,Envers存储每个标有修订ID的对象的快照。我可以查看每个对象的修订版,然后手动查询以查看发生了什么变化,但我想知道是否有一种方法可以让Envers来存储哪些字段已更改。这可能吗?我发现2011年的this链接,它建议手动检查每个对象字段。我关心的是速度。我有很多相关的对象,我可能只有一个更新的字段。我将不得不查询很多领域以找到已经改变的领域。

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

感谢

编辑

我应该说我现在用的是REVCHANGES表,所以我可以看看发生了什么,在什么版本中被修改,但这又是只在实体层面没有现场级

+1

+1此 - 我们目前正在使用旧onPostUpdate听众做一个diff和记录中DIFF表时更新制成。理想情况下,Envers查询会告诉我们:1.什么改变了额外的信用:2.它改变了什么,并改变为 – ndtreviv

回答

9

在较新的Envers版本中,您可以使用布尔标志跟踪每个修订版更改哪些属性。请参阅:

http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-tracking-properties-changes

+4

问题在于,据我所知,没有办法通过编程方式检查这些信息。您只能在审计查询中使用它。这有助于限制您所带来的修改,但对所有发生的事情都没有任何帮助。 如果我理解原来的海报权利,并为我自己的问题,我需要一种方式来访问这些标志后,修订加载,所以我可以清楚地向用户显示改变了什么。否则,日志是无用的,因为它需要很长的时间来弄清楚改变了什么。 – user3402489