【发布时间】:2015-04-12 20:58:45
【问题描述】:
我只是试图找出如何在 Hibernate 中映射以下情况。
有一些课程和一些学生。任何学生都有自己的学习计划,包括选修课和必修课。
对我来说,在数据库世界中对此进行建模看起来很容易。我会有四张桌子:
- 课程(ID、名称、描述)
- 学生(身份证、姓名)
- student_course_optional (student_id, course_id)
- student_course_required (student_id, course_id)
但我真的不知道如何用 hibernate 映射它。
这是我的初稿:
@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, optional) ?
-
@wypieprz 是的,它似乎更好:)
标签: hibernate