防止Hibernate关系表被审计

时间:2017-04-11 17:33:13

标签: java hibernate-envers

我正在使用Envers进行审核,并试图阻止实体进行审核。如果实体是关系的一部分,如下所示,我希望FK字段保留在相关的审计表上(对于Receipt_Audit上的@Entity @Audited @Table(name = "Receipt") public class ReceiptModel { @Valid @ManyToOne @JoinColumn(name = "personId") private PersonModel person; ... } )。

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

PersonModel配置如下:

{{1}}

持久收据与上述配置相得益彰。但是,当试图保持一个Person时,它会爆炸,因为该实体不存在审计表。

1 个答案:

答案 0 :(得分:1)

您实际想要做的是对@Audited(targetAuditMode=NOT_AUDITED)内的实际关系使用Receipt,并且不要将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 {
}