java - Hibernate 通过中间表使用 ManyToOne 映射实体

标签 java hibernate

我在类之间有这种关系

人物角色

@Entity
@Table(name = "estudiante")
@PrimaryKeyJoinColumn(name = "est_id", referencedColumnName = "per_id")
public class Estudiante extends Persona {

    @ManyToOne
    @JoinColumn(name = "est_acudiente")
    private Acudiente acudiente;

    @ManyToOne
    @JoinColumn(name = "est_madre")
    private Persona madre;

    @ManyToOne
    @JoinColumn(name = "est_padre")
    private Persona padre;

    @ManyToOne
    private Grado grado;

}

格拉多

@Entity
@Table(name = "grado")
public class Grado {

    @Id
    @Column(name = "gra_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Short id;

    @Column(name = "gra_nombre")
    private String nombre;

    public Short getId() {
        return id;
    }

    public void setId(Short id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

}

这里的问题是学生(Estudiante)在一段时间内可以处于不同的学位(Grado),因此会有一个中间表来保存学生所获得的所有学位,但我只需要知道学生的实际学位我不知道如何使用 hibernate 来实现这一点。

希望你能帮助我,对我的英语感到抱歉。

此致。

最佳答案

根据您的映射,一名学生只能拥有一个 Grado

Estudiante 和 Grado 存在多对一关系 所以Estudiante可以有多个Grado

所以你的关系应该是这样的

Estudiante.java

@OneToMany( mappedBy = "estudianteId")
private List<Grado> lstGrado;

Grado.java

@JoinColumn(name = "estudianteId", referencedColumnName = "ID")
@ManyToOne
private Estudiante estudianteId;

要了解最新的 Grado,您可以做一些事情

  1. 如果所有 Grado 插入都按顺序排列,您可以迭代最新的 gra_id
  2. 在 Grado 中添加新列,并将最新记录标记为 Y,其他记录标记为 N

关于java - Hibernate 通过中间表使用 ManyToOne 映射实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44014745/

相关文章:

java - 如何禁止枚举的所有值(在数据库级别),除了在java代码中定义之外?(null,empty)

java - 导入 270000 行数据时的 Hibernate 问题

java - 这是在 java 中为字符串 append 单引号的最佳方法

java - 在spring mvc中使用请求映射提交onchange

java - Hibernate - 使用日期 where 子句过滤单列数据

java - 执行 Left Join 时如何返回空对象而不是 Null

java - 使用 Bellman Ford 算法检测负循环

java - 当多个用户在 HashMap 上操作时出现 ConcurrentModificationException

java - MongoDB 检查插入

java - 如何在模拟依赖项时测试事务回滚是否有效?