Eclipselink история связанных объектов
Я могу создать историю объекта с помощью HistoryCustomizer
@Entity
@Customizer(MyHistoryCustomizer.class)
public class Employee {..}
HistoryCustomizer выглядит примерно так:
public class MyHistoryCustomizer implements DescriptorCustomizer {
public void customize(ClassDescriptor descriptor) {
HistoryPolicy policy = new HistoryPolicy();
policy.addHistoryTableName("EMPLOYEE_HIST");
policy.addStartFieldName("START_DATE");
policy.addEndFieldName("END_DATE");
descriptor.setHistoryPolicy(policy);
}
}
Объекты истории могут быть получены с подсказкой "AS_OF"
javax.persistence.Query historyQuery = em
.createQuery("SELECT e FROM Employee e", Employee.class)
.setParameter("id", id)
.setHint(QueryHints.AS_OF, "yyyy/MM/dd HH:mm:ss.SSS")
.setHint(QueryHints.READ_ONLY, HintValues.TRUE)
.setHint(QueryHints.MAINTAIN_CACHE, HintValues.FALSE);
очень хорошо, НО, если вы начнете получать доступ к объектам, на которые ссылается этот исторический объект, ссылочные объекты будут их фактической версией. Таким образом, Сотруднику с прошлого года (полученному по историческому запросу) будет присвоен текущий Адрес, а не тот, который он имел в прошлом году.
Как я могу сказать EclipseLink (2.5.0), чтобы он также выбрал связанный объект из прошлого?