Hibernate@JoinFormula

Hibernate@JoinFormula,hibernate,Hibernate,我有两个实体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 pr

我有两个实体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,但运气不好

有人能给我一个关于如何做到这一点的提示吗(在Hibernate3.5BTW中)

谢谢

以下工作:

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

是 啊它被接受了。但这是否符合预期?这个如何选择这里的最高id?按id顺序描述限制1?