Hibernate 我在jpa存储库中的多对多关系中遇到了问题,无法在联接表中使用引用进行保存
我有学生课Hibernate 我在jpa存储库中的多对多关系中遇到了问题,无法在联接表中使用引用进行保存,hibernate,jpa,spring-data-jpa,repository,spring-repositories,Hibernate,Jpa,Spring Data Jpa,Repository,Spring Repositories,我有学生课 @Entity public class Student { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "first_name") private String firstName; @ManyToMany(mappedBy = "students", fetch = FetchType.LAZY, c
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "first_name")
private String firstName;
@ManyToMany(mappedBy = "students", fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST, CascadeType.REFRESH})
private List<Course> courses;
public void addCourse(Course theCourse) {
if (courses == null) {
courses = new ArrayList<>();
}
courses.add(theCourse);
theCourse.addStudents(this);
}
}
现在我想创建学生和课程,并保存它们,将每个引用保存在联接表中。
我不知道先是哪一个,然后再加上另一个。
有人可以帮助我并提供描述此主题的参考资料?如果您想要多对多双向关系,您应该定义所属方。因此,如果选择课程作为拥有方,映射将如下所示:
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@ManyToMany(cascade = CascadeType.PERSIST)
private List<Student> students = new ArraysList<>();
...
有关详细信息:
//definitely I wrote syntax wrong here because i don't copy and paste from code.
Course c =new Course(//fill constrouctor);
CourseRepositoryy.save(c);
student s = new Student(//fill constrouctor);
s.addCourse(c)
StudentRepository.save(s);
or
student s = new Student(//fill constrouctor);
Course c =new Course(//fill constrouctor);
c.addStudents(s);
save(s);
save(c);
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@ManyToMany(cascade = CascadeType.PERSIST)
private List<Student> students = new ArraysList<>();
...