【发布时间】:2014-07-30 08:39:47
【问题描述】:
我可以使用 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) 也从过去获取相关对象?
【问题讨论】:
标签: jpa eclipselink