假设您具有以下实体:
@Entitypublic class Student { @ManyToMany private Set<Course> courses; ...}@Entitypublic class Course { @ManyToMany(mappedBy = "courses") private Set<Student> students; ...}所有者方是Student(因为它没有
mappedBy属性)。反面是Course((因为它具有
mappedBy属性)。
如果您执行以下操作:
Course course = session.get(Course.class, 3L);Student student = session.get(Student.class, 4L);student.getCourses().add(course);
Hibernate将在连接表中为学生4和课程3添加一个条目,因为您更新了关联的所有者方(
student.courses)。
而如果您执行以下操作:
Course course = session.get(Course.class, 3L);Student student = session.get(Student.class, 4L);course.getStudents().add(student);
什么都不会发生,因为uou更新了关联(
course.students)的反面,但忽略了更新所有者的面。Hibernate仅考虑所有者方。



