gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:49:54 26 4
gpt4 key购买 nike

我在类之间有这种关系

人物角色

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com