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

时间:2013-08-08 14:49:57

标签: hibernate formula

我想在两列之间执行LEFT_JOIN:

  • 'codiceSpedizione'是'ProvaInd'表的一栏

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

我在dataobject(映射数据库的java类)中使用@Formula注释执行连接:

@Formula( “CONCAT(ID,SUBSTR(codiceSpedizione,6))”)

private String idCod;

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

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

但如果我在referencedColumnName中调用'idCod',我会收到此错误:

org.hibernate.AnnotationException:@OneToOne或@ManyToOne on dataobject.Requezzo.Dbozzo引用了一个未知实体:dataobject.Dbozzo

有人能解释一下这个错误吗? 我不确定...... Formula注释创建了一个虚拟列?否则,“idCod”是一个虚拟列?

感谢您的关注并抱歉我的英语不好:)

1 个答案:

答案 0 :(得分:0)

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

请参阅文档中的“ 5.1.7.1。使用外键或关联表”:http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/mapping.html

  

您可以使用SQL片段来模拟物理连接列   @JoinColumnOrFormula / @JoinColumnOrformulas注释(只是   就像你可以使用SQL片段通过它来模拟属性列一样   @Formula注释)。

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