gpt4 book ai didi

java - 对于具有 JoinColumn 的 ManyToOne,Envers 正在审核错误的列

转载 作者:行者123 更新时间:2023-12-01 04:49:01 28 4
gpt4 key购买 nike

在审核外键时,Envers 似乎忽略了 JoinColumn 注释。

例如我有一个像这样的简单类(class):

@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标识一个特定的事物 - 例如特定地址类型的所有版本。所有查找表都被复制到应用程序数据库中 - 但仅复制当前数据,而不复制历史数据。 ]

最佳答案

这可能是使用 referencedColumnName 和 RTAM.NOT_AUDITED 的交集的错误。请提交错误报告@ https://hibernate.onjira.com/ ,envers 组件。

关于java - 对于具有 JoinColumn 的 ManyToOne,Envers 正在审核错误的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15340382/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com