给定一个由 Envers 审计的实体,其中包含一个集合。
实体 A
@Audited
public class A{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
....
@OneToMany
@JoinColumn(name = "a_id")
@AuditJoinTable(name = "A_B_AUDIT"
,inverseJoinColumns = @JoinColumn(name = "a"))
private List<B> bs;
....
}
实体 B
@Audited
public class B{
@Id
private int id;
....
@Column(name = "a_id")
private int aId;
@ManyToOne
@JoinColumn(name = "a_id", insertable = false, updatable = false)
private A a;
}
根据他们的文档 ,Envers 将添加和删除的审计信息存储到这些 AuditJoinTables (A_B_AUDIT)。但不幸的是,这不起作用,并且表中的行丢失了。
当我运行我的项目时,会创建以下表格:
A_AUDIT
B_AUDIT
A_B_AUDIT
我有单独的控制器来持久化 A 对象和 B 对象。当我尝试使用 aId 和 A 保存 B 时,audit_table ( A_B_AUDIT ) 不会更新,但更新版本的B_AUDIT会更新。
有人可以让我知道我在这里缺少什么。
谢谢 !!
Hibernate Enver 版本:5.1.4.Final