使用neo4j spring数据无法为一个节点添加更多关系

时间:2016-06-03 10:06:04

标签: java neo4j spring-data-neo4j-4 neo4j-ogm

我有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版本。

1 个答案:

答案 0 :(得分:0)

看起来你总是创建一个新的类列表,并从Excel表格中为每行添加一个类? 这将导致添加单个新关系并删除所有旧关系(这可能就是为什么您只保存了最后一个学生关系)。

相反,将类添加到User实体上的现有列表listStudentClass,您将在同一会话中创建或加载该列表。

<强>更新

还要确保将学生添加到SchoolClass,以便在保存之前实体一致