在我的应用程序中,我使用Hibernate Envers 4.2.12创建审计跟踪模块。一切正常,但是当我开始记录受审核实体的历史版本时,我在读取受审核实体的对象时遇到了一个问题,该对象也引用了另一个受审核实体。
这种情况是“有2个受审核实体(A / B)具有多对一关系(这意味着实体A具有来自实体B的外键(B_ID)。)当添加或更新实体A的实例时,只需分配或更新实体A的外键(B_ID),这意味着实体B上没有任何更改,因此我在实体B的关系侧使用了@NotAudited
“
示例:
@Entity
@Audited
public class A {
@Id
private long id;
@ManyToOne
@JoinColumn(name = "B_ID")
private B attributeReference;
//setters and getters
}
@Entity
@Audited
public class B {
@Id
private String id;
@OneToMany(mappedBy = "attributeReference", fetch=FetchType.EAGER)
@NotAudited
private List<A> attributeReferences;
//setters and getters
}
当我尝试阅读attributeReference
时,出现此异常
javax.persistence.EntityNotFoundException
因为Envers尝试从相同版本的B_AUD读取它,但是这是错误的,因此我如何从相关实体而不是经审计的实体中获取它呢?