审核外键时,Envers似乎忽略了JoinColumn注释。
E.g。我有一个像这样的简单类:
@Audited
@Entity
public class Address {
@Id
@GeneratedValue
private int id;
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
@ManyToOne
@JoinColumn (name="addressTypeFk", referencedColumnName="EntityId",nullable=false)
private AddressTypeLookup addressType;
其中引用了这样的查找表:
@Entity
public class AddressTypeLookup
{
@Id
@GeneratedValue
private int id;
private String descr;
private int entityId;
请注意,Address上的addressType属性正在加入entityId列,而不是主键“id”列。另请注意使用RelationTargetAuditMode.NOT_AUDITED:我想审核外键,但我不想审核对AddressTypeLookup的更改。问题是,当Envers记录对外键的更改时,它会记录AddressTypeLookup主键值“id”,而不是entityId。如何让Envers记录使用的entityId值?
[如果你想知道为什么我想要这个:我们有一个查找数据数据库(又名主/参考数据)。它记录历史记录:所有行都具有有效的自/至日期。 id列是唯一的; entityId标识特定的东西 - 例如特定地址类型的所有版本。所有查找表都被复制到应用程序数据库中 - 但只复制当前数据,而不是历史数据。 ]
答案 0 :(得分:0)
这可能是使用referencedColumnName和RTAM.NOT_AUDITED的交集的错误。请提交错误报告@ https://hibernate.onjira.com/,envers组件。