0

我想在两列之间执行 LEFT_JOIN:

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

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

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

@Formula("concat(id,substr(codiceSpedizione,6))")

私有字符串 idCod;

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

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

但是,如果我在 referencedColumnName 中调用“idCod”,我会收到以下错误:

org.hibernate.AnnotationException:dataobject.Requezzo.Dbozzo 上的 @OneToOne 或 @ManyToOne 引用了未知实体:dataobject.Dbozzo

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

谢谢你的关注,对不起我的英语不好:)

4

1 回答 1

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;
    }
    ...
} 
于 2013-08-08T21:59:40.020 回答