【问题标题】:How to choose fields for auditing with Hibernate Envers?如何选择使用 Hibernate Envers 进行审计的字段?
【发布时间】:2021-12-20 02:19:08
【问题描述】:

我在带有 Spring Data 的 Spring Boot 应用程序中使用 Hibernate Envers。例如,我有一个基类

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

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

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

【问题讨论】:

    标签: java spring hibernate spring-data-jpa hibernate-envers


    【解决方案1】:

    您可以像这样使用@NotAudited 注释将某些字段排除在审核之外...

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

    编辑:您可以控制审计表的架构,并通过创建像this 这样的自定义修订实体来准确决定为每个修订记录哪些信息。

    本质上你定义了一个CustomRevisionEntityCustomRevisionLister

    【讨论】:

    • 是的,但我的实体有超过 15 个字段,并且为所有字段挂起 @NotAudited 似乎不是一个好的决定
    • 您可以将@Audited 仅放在您要审核的字段/方法上,而不是整个班级。见这里:docs.jboss.org/hibernate/orm/5.2/javadocs/org/hibernate/envers/…
    • 谢谢。但就我而言,我不需要审核任何字段。我只需要跟踪所有更改的时间和类型。
    • 请看帖子编辑
    猜你喜欢
    • 2018-04-18
    • 1970-01-01
    • 2018-12-28
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 2013-05-06
    相关资源
    最近更新 更多