代码之家  ›  专栏  ›  技术社区  ›  Satish Konda

如何使用SpringDataJPA将列的新旧值保存到Audit表中

  •  2
  • Satish Konda  · 技术社区  · 8 年前

    我正在使用 Spring Boot 具有 Spring Data JPA MS Sql server2014 用于将实体(javax.persistence)保存和更新为表的过程的数据库。

    根据要求,我们需要审核所有表的每一列。因此,我创建了一个新表,名为“Audit”,包含相应的列。但我不知道如何保存新旧值和其他列。

    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),
    );
    

    我能知道审计实体的最佳方法吗?即将新旧值以及其他相关字段保存并更新到审计表中。

    1 回复  |  直到 7 年前
        1
  •  9
  •   davidlj95    6 年前

    签出hibernate envers 它易于配置(您只需将您的实体标记为@Auditable即可),并可处理以下事项:

    1. 创建审核表
    2. 插入/更新/删除实体时将数据插入审核表
    3. 它提供了自己的查询语言,您可以使用它来获取实体中所有更改的内容

    使现代化
    你也可以看看 javers .我曾和Hibernate一起使用javers EntityInterceptor Diff 了解更多详细信息。