gpt4 book ai didi

java - 在 Eclipse 链接中使用历史策略跟踪更改

转载 作者:搜寻专家 更新时间:2023-10-31 20:02:36 24 4
gpt4 key购买 nike

我正在使用 eclipse link Customizer 来跟踪对表的更改:

@Entity
@Customizer(org.acme.persistence.HistoryCustomizer.class)
public class Employee{
@Id
private long id;
...
}

import org.eclipse.persistence.config.DescriptorCustomizer;
import org.eclipse.persistence.descriptors.ClassDescriptor;
import org.eclipse.persistence.descriptors.history.HistoryPolicy;

public class HistoryCustomizer 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);
}
}

我的问题:有没有办法使用 jpa(eclipse 链接)获取此历史表,或者我必须创建一个虚拟实体才能搜索历史。

最佳答案

是的,有:

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);

一些需要注意的事情:

  • AS_OF 日期的格式是严格的。
  • 你不应该删除 READ_ONLY 和 !MAINTAIN_CACHE 指令,否则它会弄乱你的持久化单元
  • 这不适用于引用的实体,仅适用于查询返回的实体(在我们的例子中为 Employee)!请参阅我的问题:Eclipselink history of related objects

关于java - 在 Eclipse 链接中使用历史策略跟踪更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22141391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com