休眠状态下关系复合主键的问题

时间:2018-08-17 19:39:21

标签: java hibernate jpa

我有这张图 enter image description here

如何在实体的Hibernate上创建关系 EscalaDetalhes和DefinicaoEscala,因为在DefiniciaoEscala实体上,有一个由idDetalhe(与(EscalaDetalhes排在外)和idTurma(与(Turma)排在外))组成的复合主键。

我已经完成了如下课程:

@Embeddable
public class DefinicaoEscalaPK implements Serializable {

    @Column(name="myColumn")
    private Integer idTurma;
    @Column(name="myColumn2")
    private Integer idEscalaDia;

    //GETTERS , SETTERS , HASH AND EQUALS
}

@Entity
public class DefinicaoEscala implements Serializable {

    @EmbeddedId
    private DefinicaoEscalaPK id;

    @ManyToOne()
    @JoinColumn(name = "idTurno")
    private TurnoBean turno;

    //GETTERS , SETTERS , HASH AND EQUALS
}


@Entity
@Table(name ="table")
public class EscalaDetalhes{
    @id
    private Integer idDetalhe;
    @ManyToOne()
    @JoinColumn(name="mybdColumn")
    private EscalaBean escala;
    @Column(name="myColumn") 
    private Calendar dia;
    //MY QUESTION IS HERE , HOW WOULD I DESCRIBE THE RELATION HERE?  
    private List<DefinicaoEscala> escalaDiaDetalhes;

    //GETTERS , SETTERS , HASH AND EQUALS

}

我的问题在这里,如何描述这种关系?

private List<DefinicaoEscala> escalaDiaDetalhes;

1 个答案:

答案 0 :(得分:1)

referencedColumnName基本上是用来传达要映射的另一个实体的哪一列可以用于当前实体中的映射,因此,您可以在提及关系时使用属性referencedColumnName

@Entity
@Table(name ="table")
public class EscalaDetalhes{
    @id
    private Integer idDetalhe;
    @ManyToOne()
    @JoinColumn(name="mybdColumn")
    private EscalaBean escala;
    @Column(name="myColumn") 
    private Calendar dia;
    //MY QUESTION IS HERE , HOW WOULD I DESCRIBE THE RELATION HERE? 
    @OneToMany
    @JoinColumn(name="idDetalhe",referencedColumnName="idEscalaDia")
    private List<DefinicaoEscala> escalaDiaDetalhes;

    //GETTERS , SETTERS , HASH AND EQUALS

}

P.S:这完全基于您共享的代码。