JoinFormula:将hbm迁移到注释

时间:2016-04-01 11:20:58

标签: java hibernate persistence

我们正在将所有hbm文件转换为注释,并且进展顺利。 但我们遇到公式问题。

有2个表和2个实体。

Table PERSON_TYPE
    SID      (number)
    CODE     (varchar2)

Table PERSON
    SID      (number)
    PERSON_B (boolean)

@Entity
Class PersonType
    @Id
    private Long sid;
    private String code;

@Entity
Class Person
    @Id
    private Long sid;
    @Column(name = "PERSON_B")
    private boolean personB;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumnsOrFormulas({
        @JoinColumnOrFormula(formula =
            @JoinFormula(value="(decode(PERSON_B, 1, "PersonType1", 'PersonType2'))", referencedColumnName = "CODE")
    })
    private PersonType personType;

我们希望使用公式获取Entity PersonType。当boolean personB为true时,我们希望PersonType为CODE" PersonType1"否则我们想要PersonType与CODE" PersonType2"。 经过一些尝试后,我们得到了上面的代码,但是这给了我们以下异常:"引用PersonType的引用的ColumnNames(CODE)引用的PersonType没有映射到单个属性"。

当我们在公式中使用sid(它是主键)而不是CODE时它起作用,但是我们不能假设我们有它们。

0 个答案:

没有答案