如何使用 Hibernate Envers 选择审计字段?

How to choose fields for auditing with Hibernate Envers?

我在 Spring 引导应用程序中使用 Hibernate Envers 和 Spring 数据。例如,我有一个基数 class

@MappedSuperclass
class BaseEntity {
    @Id
    private Long id;
    // some base fields
    // getter and setter
}

和class

@Entity
class Entity extends BaseEntity {
    // some fields
    // getters and setters
}

我只需要审核已完成的操作及其时间戳。例如,当我创建新实体或更新现有实体对象时,我希望审计 table 包含以下信息:实体 ID、操作时间、操作类型 。 如果我只是将@Audited 添加到实体 class 那么实体的所有字段都将被审计。

您可以使用像这样的 @NotAudited 注释排除某些字段被审计...

@Audited
@Entity
class User {
  ...
  @NotAudited
  private String phoneNumber;
}

编辑: 您可以控制审核架构 table 并通过创建自定义修订实体 [=14] 来准确决定为每个修订记录哪些信息=]

本质上你定义了一个CustomRevisionEntityCustomRevisionLister