아래 두 엔티티가 있고 변경 내용을 추적하고 싶습니다.이전 개정판에서 관계 가져 오기
@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과 버전에 대한 두 개 더 dbTables 있습니다.
id = 1이고 name = "Department1"인 department를 가리키는 table 객체가 있다고 가정 해 보겠습니다. 그런 다음 table1, table2, table3, table4 등의 테이블 이름을 변경했습니다. 그리고 table_aud에서 개정판을 봅니다. 내가 리비전 (특히 최근 리비전)을 쿼리 할 때 ID가 1 인 부서를 가리키고 있지만 부서의 현재 버전에 대해서는 테이블 객체를 얻습니다. 나는 이제
table.getId() -> 1
table.getName() -> table3
table.getDepartment().getId() -> 2
table.getDepartment().getName() -> Department1
가 지금은 Department2에 부서의 이름을 변경 같은 테이블의 이전 버전이 보이는 가정 해 봅시다 의미한다. 그리고 다시 테이블의 최신 버전을 찾아 내가 표를위한 최신 버전을 쿼리 할 때 내가
table.getId() -> 1
table.getName() -> table3
table.getDepartment().getId() -> 2
table.getDepartment().getName() -> Department2
얻을, 부서는 항상 부서의 현재 버전 가리 킵니다. 그러나 나는 그것을 변경하기 전에 그것이 부서 또는 스냅 샷을 가리 키기를 원한다. Envers와 함께 이것을 달성 할 수있는 방법이 있습니까?
네, 맞습니다. 내 문제는 내가 과거 데이터를 쿼리 할 때 관계를 제외하고 얻을 수 있다는 것이다. 관계는 역사적이지 않습니다. table-department 예제를 제공 한 경우 테이블 엔티티의 역사 버전을 쿼리 할 때 Department의 역사 버전을 얻지 못합니다. Historical Table 엔티티는 항상 Department 엔티티의 현재 개정을 가리 킵니다. 그것이 내가 의미했던 것입니다. – thetux4
흠 매우 이상하게 보입니다. 원래의 객체를 검색 한 동일한 개정에서 모든 관계를 가져와야합니다. 올바른 버전 번호를 사용하고 있는지 확인하고 관계가 감사되었는지 확인하십시오. – adamw