【问题标题】:Prevent Hibernate relation table from ever being audited防止 Hibernate 关系表被审计
【发布时间】:2017-09-07 05:43:14
【问题描述】:

我正在使用 Envers 进行审计,并试图阻止实体被审计。如果实体是关系的一部分,如下所示,我希望将 FK 字段保留在相关审计表中(对于 Receipt_Audit 上的 personId)。

@Entity
@Audited
@Table(name = "Receipt")
public class ReceiptModel {
  @Valid
  @ManyToOne
  @JoinColumn(name = "personId")
  private PersonModel person;

  ...
}

PersonModel 配置如下:

@Entity
@Audited(targetAuditMode = NOT_AUDITED)
@Table(name = "Person")
public class PersonModel {
  ...
}

保留收据非常适合上述配置。但是,当尝试持久化一个 Person 时,它会崩溃,因为该实体不存在审计表。

【问题讨论】:

    标签: java hibernate-envers


    【解决方案1】:

    您真正想要做的是在Receipt 内部的实际关系上使用@Audited(targetAuditMode=NOT_AUDITED),并且不要将Person 标记为已审核。

    @Entity
    @Audited
    @Table(name = "Receipt")
    public class ReceiptModel {
      @Valid
      @ManyToOne
      @JoinColumn(name = "personId")
      @Audited(targetAuditMode = NOT_AUDITED)
      private PersonModel person;
      ...
    }
    
    @Entity
    @Table(name = "Person")
    public class PersonModel {
    }
    

    【讨论】:

    • 我的代码中的其他地方有一个错误,使它看起来好像不起作用。不过,这绝对是解决方案,感谢它,伙计。
    • 对我来说“@NotAudited private PersonModel person”有效
    猜你喜欢
    • 2019-01-22
    • 1970-01-01
    • 2011-06-13
    • 2015-01-21
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2016-10-19
    • 2017-09-13
    相关资源
    最近更新 更多