我正在使用 Spring Boot
、Spring Data JPA
和 MS Sql server2014
数据库来保存和更新实体(javax.持久性)到表中。
根据要求,我们需要审核所有表的每一列。所以我创建了新表作为“审计”并包含相应的列。但我不知道如何保存新旧值和其他列。
Spring中有没有单独的API来支持这个功能?
create table Audit
(
Id INT NOT NULL PRIMARY KEY,
TableName VARCHAR (100)
ColumnName VARCHAR (100)
RowId INT,
OldValue VARCHAR (100),
NewValue VARCHAR (100),
Type VARCHAR (100),
ChangedDate DATETIME,
ChangedBy VARCHAR (100),
);
其中“Type”表示DML操作的类型,“Old value & New value”列保存父表中列的先前值和现有值。
我能否知道审计实体的最佳方法,即将旧值和新值以及其他相关字段保存并更新到审计表中。
最佳答案
查看 hibernate envers它易于配置(您所要做的就是将您的实体标记为@Auditable)并且它负责以下工作:
- 创建审核表
- 在插入/更新/删除实体时将数据插入审计表
- 它提供了自己的查询语言,您可以使用它来获取实体中所有已更改的内容
更新
您还可以查看javers 。我曾将 Javers 与 Hibernate 一起使用 EntityInterceptor以字段变化、旧值和新值的形式捕获变化。参见哈弗斯Diff了解更多详情。
关于java - 如何使用 Spring Data JPA 将列的新旧值保存到 Audit 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39745153/