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

JavaDB:将一个类的多个实例绑定到另一个类的一个实例,java,javadb,Java,Javadb,我真的不知道如何描述这个问题(正如你从这个狡猾的标题中所说的),所以这里是对这个问题的完整描述。 我有两个班,老师和班级。 每个老师可以教几个班,每个班有几个老师。 在Java中,我们将其映射为: public class Class { @ManyToMany(mappedBy = "classes") private List<Teacher> teachers = new ArrayList<>(); } 公共类{ @许多(mappedBy=“类”) 私人列表教师

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

public class Class {
@ManyToMany(mappedBy = "classes")
private List<Teacher> teachers = new ArrayList<>();
}
公共类{
@许多(mappedBy=“类”)
私人列表教师=新建ArrayList();
}
我们有一个超类User和两个子类Teacher和Student。这些类继承自用户超类。因此,在我们的数据库中有一个名为Users的表,它将所有用户存储为教师或学生。 现在,学生只能在一个类中,因此他们只能在数据库中存储一个ClassID。 但正如我之前所说,教师可以有几节课。所以问题是:我怎样才能把老师所有的课都存储在数据库中? 我看到Java创建了一个额外的表,名为User_Class,它可能是存储一个教师所有不同类的工具,反之亦然。问题是我找不到任何关于如何使用它的文档

有人能帮我一下吗


提前感谢。

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

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

因此,如果您有两个实体(即
课程
教师
…我避免使用“类”来防止混淆),一个
课程
可以有多个
教师
,一个
教师
可以有多个
课程
,那么创建关系的方法(在数据库中)如下:

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

courseId     (PK)
courseName
teacherId    (PK)
teacherName
courseId    (FK, PK)
teacherId   (FK, PK)
表格
教师

courseId     (PK)
courseName
teacherId    (PK)
teacherName
courseId    (FK, PK)
teacherId   (FK, PK)
表格
课程\u教师

courseId     (PK)
courseName
teacherId    (PK)
teacherName
courseId    (FK, PK)
teacherId   (FK, PK)
PK
表示主键,
FK
表示外键)


希望这篇小介绍能帮助您可视化解决问题的方法。

这种方法基于复合主键。 此链接是关于:

这证实了我的想法,也证实了我的数据库设置是正确的。我有一张桌子的老师和课程,还有一张桌子的老师和课程。但是我不知道如何通过Java和JSON将多个课程分配给一名教师。将过程分为几个步骤:首先添加教师和课程,然后通过将记录添加到包含课程和教师ID的“courses\u teachers”表来关联它们。这可以用Java代码完成吗?或者我必须用SQL来做这件事,因为我想让用户自己调整这些关系。。。但那只是我。。。如果你想(和/或可以)使用不同的方法,你可以自由地这样做