我想在两列之间执行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;
}
...
}