2016-06-03 1 views
1

у меня есть 2 типа узла с N: N отношенияНевозможно добавить больше отношения к одному узлу с помощью пружинных данных Neo4j

Для примера Student -> Class

один класс может иметь более одного студента, и один студент может изучать более одного класса

, где я импортирую студентов в один класс из файла 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); 

} 

но только las t один студент имеет отношения с schoolClass, когда финишная петля

Является ли это проблемой данных весны neo4j? Я использую версию neo4j 3.0.1 и spring-data-neo4j 4.1.1.RELEASE.

ответ

0

Похоже, вы всегда создаете новый список классов и добавляете к нему один класс в строке из листа Excel? Это приведет к добавлению единственного нового отношения и удалению всех старых (возможно, из-за этого вы сохранили только последние отношения ученика).

Вместо этого добавьте класс в существующий список listStudentClass на объект пользователя, который вы либо создали, либо загрузили в том же сеансе.

Update:

Кроме того, убедитесь студент добавляется SchoolClass так, что ваши объекты соответствуют перед сохранением

+0

может быть, вы поняли мою проблему. первый студент Ехчел добавить в школу: S1 -> schoolClass второй студент: S2 -> schoolClass ... п-й ученик: Sn -> schoolClass но когда закончить цикл, только отношение Sn -> schoolClass Я создаю нового студента при импорте, так что их нет сущности в списке существующих listStudentClass , если мой код работает правильно, это будет результат как [S1, S2, ..., Sn] -> schoolClass – user3321119

+0

Я обновил свой ответ – Luanne