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

时间:2013-12-22 19:30:54

标签: java javadb

我真的不知道如何描述这个问题(正如你通过狡猾的标题所说),所以这里是问题的完整描述。 我有两个班,老师和班级。 每位老师都可以教授几门课,每节课都有几位老师。 在Java中,我们将其映射为:

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

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

有人可以帮我一把吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

您正在尝试建立多对多关系。这种关系是通过将它分成两个一对多关系而构建的。

所以,如果你有两个实体(即CourseTeacher ......我避免使用“类”来防止混淆),一个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)