Hibernate Envers - 一起审计多个实体

Posted

技术标签:

【中文标题】Hibernate Envers - 一起审计多个实体【英文标题】:Hibernate Envers - audit multiple entities together 【发布时间】:2013-08-27 19:36:39 【问题描述】:

我希望使用 Envers 来处理我的应用程序中的审核。我有多个用例,所以我仅限于确保我有一个 RevisionEntity 来代表我的整个应用程序(否则,我认为使用多个实体解决这个问题会容易得多)。基本上,我想跟踪一个实体的多个实例作为同一修订版的一部分,理想情况下甚至跟踪其他实体作为该修订版的一部分。

基本上,一个实体(父实体)的插入应该触发修订的开始,应该包括对一个实体的更新,并且还应该包括对第三个实体的插入或更新(在这一修订中)。

那么这需要自定义策略吗?我是要打破现有实体的策略,还是需要进行 if/else 检查?

【问题讨论】:

【参考方案1】:

每个修订都捕获在单个事务中完成的更改,并且不可自定义;也总是有一个单一的修订实体。

这个想法是数据库总是在事务之前和事务提交之后处于“一致”状态。这就是 Envers 想要捕捉的状态。

因此,如果您在一个事务中修改多个实体,它们都将在一个修订中被捕获。

【讨论】:

以上是关于Hibernate Envers - 一起审计多个实体的主要内容,如果未能解决你的问题,请参考以下文章

审计没有 Hibernate Envers 的 java 实体

在 Spring Hibernate java 项目中使用“Envers”审计表

仅生成 Hibernate Envers 的审计表

审计:对子修改的父实体修订(Javers/Envers/... + Hibernate)

Hibernate Envers - 在启动时填写审计表

Hibernate Envers 管理的审计表的主键是啥?