【问题标题】:Can't add more relationship to one node using neo4j spring data无法使用 neo4j spring 数据向一个节点添加更多关系
【发布时间】:2016-06-03 10:06:03
【问题描述】:

我有 2 个具有 N:N 关系的节点类型

例如学生 -> 班级

一个班级可以有多个学生,一个学生可以学习多个班级

我将学生从 excel 文件导入到一个班级,我遇到了不知道为什么的问题?

这是我的代码:

学生.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 版本。

【问题讨论】:

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


    【解决方案1】:

    您似乎总是在创建一个新的类列表并从 Excel 工作表中为每行添加一个类? 这将导致添加单个新关系并删除所有旧关系(这可能是您只保存最后一个学生关系的原因)。

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

    更新

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

    【讨论】:

    • 可能是你误解了我的问题。 excel文件的第一个学生添加到学校:S1-> schoolClass第二个学生:S2-> schoolClass ...第n个学生:Sn-> schoolClass但是当完成循环时,只有关系Sn-> schoolClass我创建新学生时如果我的代码运行正确,则它们不是存在列表 listStudentClass 上的实体,结果将是 [S1, S2, ..., Sn] -> schoolClass
    猜你喜欢
    • 2017-03-22
    • 1970-01-01
    • 2013-02-06
    • 2015-09-07
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多