1

我需要维护数据库中数据的修改历史。修改不会很常见,因此似乎可以存储整行而不是仅存储差异,这在空间方面会更有效。Hibernate envers 似乎是一个不错的解决方案。

现在我注意到 Audit 表更像是一个影子表,它将在第一次插入时存储数据。是否可以防止 envers 在第一次更新之前存储审计信息。我只是想减少数据库的磁盘占用,因为我可能不是在非常高性能的服务器上运行。我希望实际表包含最新数据,而审计表只包含历史数据而不是当前行。我没有在我的 persistence.xml 中使用任何特定配置。Hibernate 4.1 似乎找到了带有注释的审计类。我认为我应该处理插入后的侦听器,但不确定我应该如何处理它。

4

1 回答 1

0

这之前已经被请求过,虽然这可能是一个不错的功能,但它绝对没有自己的问题来源。

了解 Envers 附带 2 种审计策略:DefaultValidity.

DefaultAuditStrategy是一个非常基本的策略,它不期望审计表中存在任何先前的修订行。这种特殊策略可能很容易适用于仅存储更改的行的情况。

但不幸的是,其他策略不会。

ValidityAuditStrategy期望在检测到更改时存在先前的审计行来操纵有效性策略列。如果审计表不存储插入,那么第一次更改将失败,因为策略将确定它无法正确操作策略字段。

这可能会在未来的某个时候改变,但目前我们不支持这种情况。

于 2016-12-09T01:41:36.370 回答