我正在使用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时,它会爆炸,因为该实体不存在审核表。
最佳答案
您真正想做的是在@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 {
}