我有2个N:N关系的节点类型
例如学生 - >类
一个班级可以有一个以上的学生,一个学生可以学习多个班级
我从excel文件导入学生到一个班级,我有问题,我不知道为什么?
这是我的代码:
Student.java
@NodeEntity
public class User implements Serializable {
@GraphId
Long id;
String userCode;
String email;
String password;
String realName;
Date birthday;
String phone;
Integer gender;
Integer status;
Integer roleType;
@Relationship(type=RelationshipType.CLASS_OF_STUDENT, direction=Relationship.OUTGOING)
List<SchoolClass> listStudentClass;
}
SchoolClass.java
@NodeEntity
public class SchoolClass implements Serializable {
@GraphId
Long id;
String className;
String classCode;
String createUser;
Date createDate;
String updateUser;
Date updateDate;
@Relationship(type=RelationshipType.CLASS_OF_STUDENT, direction=Relationship.INCOMING)
List<User> students;
}
我循环从excel导入学生
for(...) {
...
List<SchoolClass> listStudentClass = new ArrayList<SchoolClass>();
listStudentClass.add(schoolClass);
student.setListStudentClass(listStudentClass);
...
userRepository.save(student);
}
但只有最后一个学生在完成循环时与schoolClass有关系
这是neo4j spring数据问题吗?我使用neo4j 3.0.1和spring-data-neo4j 4.1.1.RELEASE版本。
答案 0 :(得分:0)
看起来你总是创建一个新的类列表,并从Excel表格中为每行添加一个类? 这将导致添加单个新关系并删除所有旧关系(这可能就是为什么您只保存了最后一个学生关系)。
相反,将类添加到User实体上的现有列表listStudentClass
,您将在同一会话中创建或加载该列表。
<强>更新强>:
还要确保将学生添加到SchoolClass
,以便在保存之前实体一致