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