首页 > 解决方案 > 错误:无法找到具有逻辑名称的列 - 未找到参考列

问题描述

我有这个实体。

@Entity
@Table(name ="ESCALADETALHE")
public class EscalaDiaBean {

    @Id
    @SequenceGenerator(name = "ESCALADETALHE_S01", sequenceName = "ESCALADETALHE_S01")
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "ESCALADETALHE_S01")
    @Column(name = "IDPAI", unique = true, nullable = false, precision = 9, scale = 0)
    private Integer idDetalhe;

    @ManyToOne(cascade = CascadeType.ALL, optional = false)
    @JoinColumn(name ="idEscala")
    private EscalaBean escala;

    @Temporal(TemporalType.DATE)
    @Column(name = "dia")
    private Calendar dia;

    @OneToMany(fetch = FetchType.LAZY ,orphanRemoval = true,cascade = CascadeType.ALL, targetEntity = EscalaDiaBean.class )
    @JoinColumn(referencedColumnName = "id.escalaDia")
    private List<EscalaDiaDetalheBean> escalaDiaDetalhes;
    //getters , setters, hash and equals
}

它必须为具有如下EscalaDiaDetalheBean声明的复合键的关系获取 OneToMany:EscalaDiaDetalhePK

@Embeddable
public class EscalaDiaDetalhePK implements Serializable {


    @ManyToOne()
    public TurmaBean turma;

    @ManyToOne()
    public EscalaDiaBean escalaDia;
    //getters , setters, hash and equals
}

所以,我有 clild 实体:

@Entity
@Table(name = "DEFINICAOESCALA")
@AssociationOverrides(
        value = {
                @AssociationOverride(name = "id.turma", joinColumns = @JoinColumn(name ="idTurma")),
                @AssociationOverride(name = "id.escalaDia", joinColumns = @JoinColumn(name ="idEscalaDia")),
        }
)
public class EscalaDiaDetalheBean  implements Serializable {

    @EmbeddedId
    public EscalaDiaDetalhePK id;


    @ManyToOne(cascade = CascadeType.ALL)
    public TurnoBean turno;
}

EscalaDiaBean与 EscalaDiaDetalheBean建立关系的正确方法是什么?

按照下面描述的方式,我得到Unable to find column with logical name: id.escalaDia in org.hibernate.mapping.Table(ESCALADETALHE) 及其相关的超级表和辅助表

@OneToMany(fetch = FetchType.LAZY ,orphanRemoval = true,cascade = CascadeType.ALL, targetEntity = EscalaDiaBean.class )
    @JoinColumn(referencedColumnName = "id.escalaDia")
    private List<EscalaDiaDetalheBean> escalaDiaDetalhes;

标签: javahibernatejpa

解决方案


推荐阅读