假设我有两个实体如下,我想跟踪变化。
@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
注释实体后,我还有两个dbTables用于使用table_aud和department_aud进行版本控制。
假设我有一个表对象,指向id = 1且name =“Department1”的部门。 然后我对table1,table2,table3,table4等表名进行了更改。我在table_aud中看到了修订版。当我查询修订版(特别是最新修订版)时,我得到的Table对象指向id = 1的部门,但是当前版本的Department。 我的意思是让我们说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实现这个目标?
答案 0 :(得分:0)
如果查询最新版本,则会获得最新数据。如果您查询历史修订,您将获得历史数据 - 这是审计的整体概念。修订捕获一致的DB状态,每个修订对应一次提交。