Hibernate:如何使用@Formula注释调用列创建



我想在两列之间执行LEFT_JOIN:

  • "codiceSpedizione",它是"ProvaIn"表的一列

  • "idCod"是"ProvaRiep"表的两列的串联(因此,idCod不是现有列)

我在dataobject(映射数据库的java类)中执行带有@Formula注释的串联:

@公式("concat(id,substr(codiceSpedizione,6)")

private字符串idCod;

现在我想在Dbozzo.java中调用idCod:

@ManyToOne
@JoinColumn(name="codice", referencedColumnName="idCod", nullable=false)
public Dbotivo getDbotivo() {
    return dbotivo;
}

但如果我在referencedColumnName中调用"idCod",我会得到以下错误:

org.hubinate.AnnotationException:数据对象上的@OneToOne或@ManyToOne。Dbozzo引用了一个未知实体:dataobject。Dbozzo

有人能解释一下这个错误吗?我不确定。。公式注释创建虚拟列?否则,"idCod"是虚拟列吗?

感谢您的关注,并为我糟糕的英语感到抱歉:)

我不完全确定,但我认为你可以使用@JoinColumnOrFormula

参见"5.1.7.1。使用外键或关联表":http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/mapping.html

您可以使用SQL片段来模拟物理联接列@JoinColumnOrFormula/@JoinColumnOrFormula注释(仅就像您可以使用SQL片段通过@公式注释)。

@Entity
public class Ticket implements Serializable {
    @ManyToOne
    @JoinColumnOrFormula(formula="(firstname + ' ' + lastname)")
    public Person getOwner() {
        return person;
    }
    ...
} 

最新更新