我在类之间有这种关系
人物角色
@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,您可以做一些事情
- 如果所有 Grado 插入都按顺序排列,您可以迭代最新的 gra_id
- 在 Grado 中添加新列,并将最新记录标记为 Y,其他记录标记为 N
关于java - Hibernate 通过中间表使用 ManyToOne 映射实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44014745/