我想在两列之间执行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”是一个虚拟列?
感谢您的关注并抱歉我的英语不好:)
答案 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;
}
...
}