我有两个表学生和课程,有很多关系。
@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来实现这一点,以便我可以将数据保存到关联表中?
答案 0 :(得分:2)
不,你不必。它应该像将课程添加到学生的课程列表并更新(保存)学生一样简单。
但请记住:据我所知,hibernate无法自行更新双向关系。这意味着您必须将每门课程的学生添加到学生列表中并保存课程。
希望这有帮助