OneToOne 与查询的关系

OneToOne Relationship with a query

我目前正在努力将使用 JDBC(不是为 JPA 设计)的代码迁移到 Hibernate,我有两个实体想 link 一对一一种关系。 以下是可以帮助解释我的问题的类似实体:

Entity A
 complexKey : String

Entity B
 complexSubKey1: String
 complexSubKey2: String
 complexSubKey3: String

对于这个例子,我想 link 实体 A 和 B,当

complexKey = complexSubKey1 + ":" + complexSubKey2 + ":" + complexSubKey3.

我真的不知道如何做到这一点。

您应该可以通过使用 JoinColumnOrFormula 注释

来实现
public class B{

    @OneToOne
    @JoinColumnsOrFormulas(
           { 
              @JoinColumnOrFormula(
                 formula=@JoinFormula(value="concat(complexSubKey1,':','complexSubKey2',':',complexSubKey3)"
                     , referencedColumnName="complexKey")) 
           })
    @Fetch(FetchMode.JOIN)
    private A a;
}