私は2つのエンティティ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)?
ありがとう!