我有两个实体 A 和 B。
public class A{
@Id
@GeneratedValue
private Integer id;
private String uuid;
...
}
UUID 是外部给出的;ID可以看作是版本。
现在,我想在 B 中引用 A,以便将 uuid 存储在 B 中,并自动选择具有相应 uuid 和最高 id 的 A。
我尝试的是:
public class B{
@Id
@GeneratedValue
private Integer id;
private String uuidOfA;
@ManyToOne
@JoinFormula(value="SELECT a.id FROM A a WHERE v.uuid = uuidOfA AND v.id = (SELECT max(x.id) FROM A x WHERE x.uuid = v.uuid)", referencedColumnName="id")
private A a;
...
}
这将在 B 中创建一个包含 A 的 id 的列,如果我尝试持久化一个对象,则会引发异常。我也尝试过@JoinColumnsOrFormulas,但没有运气。
有人可以给我一个关于如何做到这一点的提示(在 Hibernate 3.5 btw 中)吗?
谢谢!