我正在使用Spring Boot
,Spring Data JPA
和MS Sql server2014
数据库来保存和更新实体(javax.persistence)到表中。
根据要求,我们需要审核所有表格的每一列。所以我创建了新的表格" Audit"与各列。但我不确定如何保存旧值和新值以及其他列。
春天是否有任何单独的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操作的类型和"旧值&新价值"列保存父表中列的前一个和现有值。
我是否可以了解审核实体的最佳方法,即将旧值和新值以及其他相关字段保存并更新到审核表中。
答案 0 :(得分:5)
查看hibernate envers,它易于配置(您只需要将您的实体标记为@Auditable),并注意以下事项:
<强>更新强>
您还可以查看javers。我曾使用javers和Hibernate的EntityInterceptor来捕捉字段变化,旧值和新值的变化。有关详细信息,请参阅javers Diff。