java - Hibernate 上关系复合主键的问题

标签 java hibernate jpa

我有这张图 enter image description here

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

我已经完成了如下所示的类(class):

@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;

最佳答案

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:这完全基于您共享的代码。

关于java - Hibernate 上关系复合主键的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51901914/

相关文章:

java - 在java中测试如何检查接口(interface)的方法是否被调用?

java - Android:NoClassDefFoundError 仅适用于发布版本

java - HQL 按表达式排序

java - Spring 要求@Transactional 提供getter 服务?

java - 添加表关系时找不到表

java - 如何使 IntArrayBag 通用?

尝试迭代字符串时出现 java.lang.StringIndexOutOfBoundsException

java - 延迟加载 @OneToOne 与 Hibernate 的关系

mysql - 连接到 google Cloud SQL 时,AppEngine 中有时会发生通信链接故障错误

java - 是否可以在 jpa 中调用不调用 setter 的情况下更新实体