我真的不知道如何描述这个问题(正如你通过狡猾的标题所说),所以这里是问题的完整描述。 我有两个班,老师和班级。 每位老师都可以教授几门课,每节课都有几位老师。 在Java中,我们将其映射为:
public class Class {
@ManyToMany(mappedBy = "classes")
private List<Teacher> teachers = new ArrayList<>();
}
我们有一个超类,用户和两个子类,教师和学生。这些类继承自User超类。因此,在我们的数据库中,我们有一个名为Users的表,它将所有用户存储为教师或学生。 现在,学生只能在一个班级,所以他们只能在数据库中存储一个ClassID。 但正如我之前所说,教师可以有几节课。所以重点是:我如何能够存储教师在数据库中的所有课程? 我看到Java创建了一个名为User_Class的额外表,它可能存储了教师拥有的所有不同类,反之亦然。问题是我找不到任何关于如何使用它的文档。
有人可以帮我一把吗?
提前致谢。
答案 0 :(得分:1)
在尝试通过代码解决此问题之前,我认为您需要从数据库的角度来理解它。
您正在尝试建立多对多关系。这种关系是通过将它分成两个一对多关系而构建的。
所以,如果你有两个实体(即Course
和Teacher
......我避免使用“类”来防止混淆),一个Course
可以有很多{{1 s和一个Teacher
可以有很多Teacher
s,那么创建关系(在数据库中)的方法就是这样:
表Course
Courses
表courseId (PK)
courseName
Teachers
表teacherId (PK)
teacherName
Courses_Teachers
(courseId (FK, PK)
teacherId (FK, PK)
代表“主键”,PK
代表“外键”)
希望这个小小的介绍可以帮助您想象解决问题的方法。
答案 1 :(得分:0)
该方法基于复合主键。 这个链接是关于: how to make a composite primary key (java persistence annotation)