我有以下实体:
@Entity
public class Policy {
@ID
private String uuid;
private String policyId;
private Long version;
private Long auditVersion;
}
@Entity
public class PolicySearch {
@ID
private String uuid;
@ManyToOne(optional = false)
@JoinColumn(name = "policy_id", referencedColumnName = "policy_id")
private Policy policy;
}
基本上,我有一个保险单,可以在数据库(auditVersion)中跟踪所有更改。在进行一些较小的更改后,可以发布版本,即版本递增且auditVersion再次从0开始。每个数据库条目都有一个不同的UUID,但是对于一个策略的所有版本,insuranceId都保持不变。
问题:我有一个要搜索的实体,搜索总是搜索策略的所有版本-这就是为什么我引用policyId而不是uuid的原因。当JPA加载实体时,我最终会采取任何政策。我希望有一种方法可以始终在给定引用的policyId的情况下获得策略的最高版本(以及该版本的最高auditVersion)。
我已经想到了以下方法,但是我对其中任何一种都不满意:
任何帮助将不胜感激。我使用EclipseLink。