Hibernate@JoinFormula

我有两个实体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中)吗?

谢谢!

回答:

以下作品:

@ManyToOne

@JoinColumnsOrFormulas({

@JoinColumnOrFormula(formula=@JoinFormula(value="(SELECT a.id FROM A a WHERE a.uuid = uuid)", referencedColumnName="id")),

@JoinColumnOrFormula(column = @JoinColumn("uuidOfA", referencedColumnName="uuid"))

})

private A a;

以上是 Hibernate@JoinFormula 的全部内容, 来源链接: utcz.com/qa/399971.html

回到顶部