Java DB:将一个类的多个实例绑定到另一个类中的一个实例



我真的不知道如何描述这个问题(正如你通过不可靠的标题所说的那样),所以这里有一个关于这个问题的完整描述。我有两个班,老师和班。每个老师可以教几个班,每个班有几个老师。在Java中,我们这样映射它:

public class Class {
@ManyToMany(mappedBy = "classes")
private List<Teacher> teachers = new ArrayList<>();
}

我们有一个超类User和两个子类Teacher和Student。这些类继承自User超类。因此,在我们的数据库中,我们有一个名为Users的表,它将所有用户存储为教师或学生。现在,学生只能在一个班级中,因此他们只能在数据库中存储一个ClassID。但正如我之前所说,老师可以上几节课。所以问题是:我如何才能将老师的所有课程存储在数据库中?我看到Java创建了一个额外的表,名为User_Class,它可能用于存储教师拥有的所有不同的类,反之亦然。问题是,我找不到任何关于如何使用它的文档。

有人能帮我一下吗?

提前谢谢。

在尝试通过代码解决此问题之前,我认为您需要从数据库的角度来理解它。

你正试图建立一种多对多的关系。这种关系是通过将其分成两个一对多的关系来建立的。

因此,如果您有两个实体(即CourseTeacher……我避免使用"类"来防止混淆),并且一个Course可以有多个Teachers,一个Teacher可以有很多Courses,那么创建关系(在数据库中)的方法如下:

Courses

courseId     (PK)
courseName

Teachers

teacherId    (PK)
teacherName

Courses_Teachers

courseId    (FK, PK)
teacherId   (FK, PK)

(PK代表"主键",FK代表"外键")

希望这个小介绍能帮助你想象解决问题的方法。

该方法基于复合主键。这个链接是关于:如何制作复合主键(java持久性注释)

最新更新