防止 Hibernate 关系 table 被审计
Prevent Hibernate relation table from ever being audited
我正在使用 Envers 进行审计,并试图阻止实体被审计。如果实体是关系的一部分,如下所示,我希望 FK 字段保留在相关审计 table 中(对于 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 {
...
}
保留收据非常适合上述配置。但是,当试图保留一个人时,它会爆炸,因为该实体不存在审计 table。
您真正想要做的是在 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 {
}
我正在使用 Envers 进行审计,并试图阻止实体被审计。如果实体是关系的一部分,如下所示,我希望 FK 字段保留在相关审计 table 中(对于 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 {
...
}
保留收据非常适合上述配置。但是,当试图保留一个人时,它会爆炸,因为该实体不存在审计 table。
您真正想要做的是在 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 {
}