java Hibernate可连接多个类型
我试图在两个实体之间建立多对多关系,其中有多种关系类型
例如,假设我们有一个表“course”、一个表“person”和一个映射表“course\u person”。任何给定的课程都可以有讲师、评分员和学生,每个人都是person表中的集合。每个人都可以以不同的角色参加多个课程
“课程人员”表有“课程id”、“人员id”和“类型”列,其中类型为“讲师”、“评分员”或“学生”
课程类将有三个不同的集合成员,每个成员列出给定角色中的人员。它看起来像这样:
@Entity
@Table(name = "course")
public class Course{
private Set<Person> instructors;
private Set<Person> graders;
private Set<Person> students;
@ManyToMany(
targetEntity=Person.class,
cascade={CascadeType.PERSIST, CascadeType.MERGE}
)
@JoinTable(
name="course_person",
joinColumns=@JoinColumn(name="course_id"),
inverseJoinColumns=@JoinColumn(name="person_id")
)
@WhereJoinTable(clause="type='INSTRUCTORS'")
public Set<Person> getInstructors() {
return this.instructors;
}
@ManyToMany(
targetEntity=Person.class,
cascade={CascadeType.PERSIST, CascadeType.MERGE}
)
@JoinTable(
name="course_person",
joinColumns=@JoinColumn(name="course_id"),
inverseJoinColumns=@JoinColumn(name="person_id")
)
@WhereJoinTable(clause="type='GRADER'")
public Set<Person> getGraders() {
return this.graders;
}
@ManyToMany(
targetEntity=Person.class,
cascade={CascadeType.PERSIST, CascadeType.MERGE}
)
@JoinTable(
name="course_person",
joinColumns=@JoinColumn(name="course_id"),
inverseJoinColumns=@JoinColumn(name="person_id")
)
@WhereJoinTable(clause="type='STUDENT'")
public Set<Person> getStudents() {
return this.students;
}
}
这对于从数据库读取数据非常有效。但是,它不适用于在映射表中创建新条目,因为hibernate不知道将“type”设置为什么。我需要找到一种方法,将任何Person对象添加到“讲师”中,并将每个关系类型的类型设置为“讲师”,等等。这可行吗
共 (0) 个答案