我在向具有现有关系的节点添加新关系时遇到问题,例如,在下面显示的代码片段中,如果已经添加了已添加课程关系的学生,则尝试添加部门关系会删除/取消设置现有课程来自学生。
@Getter
@Setter
@NoArgsConstructor
@Node
public class Student {
@Id
@GeneratedValue
private String elementId;
private String name;
@Relationship(type="TAKES", direction = Direction.OUTGOING)
private Course course;
@Relationship(type="TAKES", direction = Direction.OUTGOING)
private Department dept;
}
@Getter
@Setter
@NoArgsConstructor
@Node
public class Department {
@Id
@GeneratedValue
private String elementId;
private String name;
}
@Getter
@Setter
@NoArgsConstructor
@Node
public class Course {
@Id
@GeneratedValue
private String elementId;
private String name;
}
public interface StudentRepository extends Neo4JRepository<Student, String>{}
public interface CourseRepository extends Neo4JRepository<Course, String>{}
public interface DeptRepository extends Neo4JRepository<Department, String>{}
public class StudentService {
private StudentRepository studentRepository;
...
public void addCourse(String name, Course c) {
Student s = studentRepository.findByName(name);
s.setCourse(c)
studentRepository.save(s);
}
public void addDepartment(String name, Department d) {
Student s = studentRepository.findByName(name);
s.setDepartment(d);
studentRepository.save(s);
}
}
看来我必须做一些类似下面的事情来缓解这个问题。然而,当节点有很多(如果是 6 个)现有关系时,事情就会变得困难。
public void addDepartment(String name, Department d) {
Course c = courseRepository.findByName();
Student s = studentRepository.findByName(name);
s.setCourse(c) // Without this, it will remove it from the graph
s.setDepartment(d);
studentRepository.save(s);
}
如何解决这个问题? Neo4J 是否有一些机制来缓解这个问题?当需要解决一系列关系时,事情会变得更加困难。谢谢你。
neo4j spring 中更新动态关系存在一些问题。在 neo4j 社区 中有一个关于它的线程,其中提到了关系具有
@GeneratedValue
注释时的问题。 GitHub 上提出了一个问题,不久前合并了更改。不知道最新版本是否解决了所有问题。
所以,我想,你可以尝试一些不同的方法:
@GeneratedValue
注释。