我在学校和学生实体之间有一对多的关系(使用Spring Data JPA)
在尝试检索当前学生列表并使用下面的代码删除它时,我收到以下错误
School school = schoolRepo.findOne(schoolId);
Set<Student> students = school.getStudents();
studentRepo.delete(students);
schoolRepo.saveAndFlush(school);
传递给合并的已删除实例:[com.api.beans.Student#]
但是,当我使用自定义查询修改getStudents部分代码时,完全正常
School school = schoolRepo.findOne(schoolId);
Set<Student> students = studentRepo.findBySchool(schoolId);
studentRepo.delete(students);
schoolRepo.saveAndFlush(school);
其中findBySchool自定义查询在studentRepo中定义如下
@Query("SELECT s FROM Student s WHERE s.school.schoolId =:schoolId")
Set<Student> findBySchool(@Param("schoolId") Long schoolId);
为什么会这样?我觉得我缺少一些概念清晰度,并希望了解这一点。
基本上,这两行之间有什么区别?
Set<Student> students = school.getStudents();
Set<Student> students = studentRepo.findBySchool(schoolId);
为什么第一行在第二种方法正常工作时出错?