假设我有两个实体,如下所示,我想跟踪更改。
@Audited
public class Table {
private String name;
@ManyToOne(fetch = FetchType.LAZY)
private Department department;
//getters and setter
}
@Audited
public class Department {
private String name;
//getter and setter
}
在使用注释实体后,@Audited
我还有两个用于使用 table_aud 和 department_aud 进行版本控制的 dbTable。
假设我有一个表对象,它指向 id=1 和 name="Department1" 的部门。然后我对表名进行了更改,例如 table1、table2、table3、table4 等。我在 table_aud 中看到了修订。当我查询修订版(特别是最新修订版)时,我得到指向 id=1 的部门但针对当前版本的部门的 Table 对象。我的意思是让我们说以前版本的 Table 看起来像
table.getId() -> 1
table.getName() -> table3
table.getDepartment().getId() -> 2
table.getDepartment().getName() -> Department1
现在我将部门的名称更改为 Department2。并再次查找 Table 的最新版本,我得到了
table.getId() -> 1
table.getName() -> table3
table.getDepartment().getId() -> 2
table.getDepartment().getName() -> Department2
当我查询 Table 的最新版本时,Department 总是指向 Department 的当前版本。但是,我希望它在更改之前指向部门的快照或状态。有没有办法通过 Envers 实现这一目标?