背景:
Spring Data Jpa很方便,但很多时候,我们注意不到他内部的细节,就会导致乱用,从而导致一系列的报错。
今天在工作中,发现了一个不明原理的问题,特此总结一下。
一对多关系中,拿Class和Student举例子,我们通常会在Class的实体类里面维护一个StudentList,可以通过级联操作,新增Class和其对应的Student。
假设:
假设我们有一个班级1 Class cls1 = new Class();
班级1里面有两个学生 Student s1 = new Student(); Student s2 = new Student();
List<Student> list = new Array>List<>();
list.add(s1); list.add(s2);
cls1.setStudentList(list);
保存班级和学生信息
classRepository.saveAndFlush(cls1);
问题:
如果我们想要更新班级1的信息,班级1里面的学生1和学生2都走了,来了个学生3。
我们会怎么做?
List<Student> newList = new Array>List<>();
Student s3 = new Student();
newList.add(s3);
cls1.setStudentList(newList);
classRepository.saveAndFlush(cls1);
这个时候问题就出现了,保