我只是試圖找出如何在Hibernate中映射下面的情況。休眠。如何將兩個多對多映射到同一個實體
有一些課程和一些學生。任何學生都有自己的學習計劃,其中包含可選課程和必修課程。
我很容易在數據庫世界中建模。我將有四個表:
- 場(ID,名稱,描述)
- 學生(ID,姓名)
- student_course_optional(student_id數據,COURSE_ID)
- student_course_required(student_id數據,COURSE_ID)
但我真的不知道如何映射這與休眠。
這裏我的第一稿:
@Entity
public class Student {
private Long id;
private Long version;
private String name;
private List<Course> requiredCourses;
private List<Course> optionalCourses;
...
@ManyToMany
@JoinTable(name="Course")
public List<Course> getRequiredCourses() {
return requiredCourses;
}
@ManyToMany
@JoinTable(name="Course")
public List<Course> getOptionalCourses() {
return optionalCourses;
}
}
@Entity
public class Course {
private Long id;
private Long version;
private String name;
private List<Student> students;
private List<Student> optionalStudents;
...
@ManyToMany(mappedBy="requiredCourses")
public List<Course> getStudents() {
return requiredCourses;
}
@ManyToMany(mappedBy="optionalCourses")
public List<Course> getOptionalStudents() {
return optionalCourses;
}
}
但不知何故,這看起來奇怪我。或者這是正確的?
是否可以接受你改變數據庫模型一點:更換_student_course_optional_和_student_course_required_表與例如_student_course(student_id,course_id,可選)_? – wypieprz
@wypieprz是的,它似乎更好:) – Tima