如何通过Hibernate在多对多关系中插入关联表?

时间:2016-08-23 05:29:52

标签: java mysql jpa associations

我有两个表学生和课程,有很多关系。

@Entity
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    ...
    @ManyToMany(mappedBy="students")
    private List<Course> courses = new ArrayList<Course>();

    ...
    // getters and setters
}


@Entity
public class Course {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    ...
    @ManyToMany
    private List<Student> students = new ArrayList<Student>();

    ...
    // getters and setters
}

我正在使用Hibernate和Persistence API来进行映射 我们假设我在课程表中有5门课程:

Id  Name
1  Course1
2  Course2
3  Course3
4  Course4
5  Course5

Student表以零记录开头。一旦学生被插入学生表,即

Id  Name
1  Student1

我还需要在CourseStudent表中插入至少一条记录。让我们说Stduent1需要三门课程Course1,Course2和Course3,然后我需要插入:

StudentId CourseID
1         1
1         2
1         3

我现在面临的困难是,在我的数据模型中,我没有CourseStudent课程,只有学生和课程以及他们的映射@many_to_many。这个表CourseStudent是由Hibernate创建和管理的,它的映射类CourseStudent似乎没必要。

在这种情况下,如何将记录插入关联表中,该关联表在模型中没有对象映射?我是否必须显式创建一个类CourseStudent来实现这一点,以便我可以将数据保存到关联表中?

1 个答案:

答案 0 :(得分:2)

不,你不必。它应该像将课程添加到学生的课程列表并更新(保存)学生一样简单。

但请记住:据我所知,hibernate无法自行更新双向关系。这意味着您必须将每门课程的学生添加到学生列表中并保存课程。

希望这有帮助