java - 防止 Hibernate 关系表被审计

标签 java hibernate-envers

我正在使用 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 时,它会崩溃,因为该实体不存在审核表。

最佳答案

您真正想要做的是在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 {
}

关于java - 防止 Hibernate 关系表被审计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43352664/

相关文章:

java - MediaScannerConnection,此语法无法编译

java - 如何在 JUnit 测试期间消除 'Hibernate audit tables are missing' WARN 消息

java - hibernate 恩维尔 : @AuditJoinTable rows missing

java - 验证 Base64 编码的字符串

entity - 创建 Envers 自定义修订实体

hibernate-envers - 使用 hibernate-envers 审计 @ElementCollection/@Embeddable

hibernate - 恩弗斯 : How to add a new column in *_AUD table (not in REVINFO table)

java - 如何从java异步发送soap消息

java - ConcurrentWeakKeyHashMap isEmpty 方法

java - 单击 listView 上的按钮后获取 _id 和位置项目 - Android