在Spring数据中neo4j 3.x在两个节点之间创建关系,关系包含之前用于通过apis实现此目的的属性集
create :
n4jOperations.createRelationshipBetween(Object start, Object end, Class<R> relationshipEntityClass, String relationshipType, boolean allowDuplicates);
delete:
n4jOperations.deleteRelationshipBetween(Object start, Object end, String type);
get:
n4jOperations.getRelationshipBetween( from, to, relationshipClass, relationshipType );
但是在迁移后我没有找到上面的apis
根据文档说
@NodeEntity
public class Student {
private String name;
@Relationship(type = "ENROLLED")
private Set<Enrollment> enrollments;
}
By repo.save(Student);
//关系创建是可能的,但新的api是如何实现以下用例
1.如何避免重复创建关系?
2.get两个节点之间的关系?
2.删除两个节点之间的关系?
答案 0 :(得分:2)
SDN 4不提供直接设置节点和关系等低级图形操作。
图表中的关系使用您的域类中的对象 引用进行建模和操作。它们有两种形式:隐式和显式。通过两个节点实体之间的简单引用来描述隐式关系,例如,客户和地址:
class Customer {
@Relationship(type="LIVES_AT")
Address address; // implied (:Customer)-[:LIVES_AT]->(:Address)
...
}
显式关系使用RelationshipEntity对象建模,并且允许具有属性(但不必)。它们仍然作为域模型中的引用进行访问。
class Person {
@Relationship(type="RATED")
List<Rating> ratings
}
class Movie {
}
@RelationshipEntity(type="RATED")
class Rating {
@StartNode Person person;
@EndNode Movie movie;
int stars;
}
注意:如果您不需要特定关系的属性,则不需要使用RelationshipEntity。
回答您的具体问题:
1)SDN 4.0不会创建重复的关系。无论您持久存在多少次特定对象引用,它都只会在图形中由一个关系表示。
2)希望现在很清楚!
3)将对象引用设置为null并保存父对象将删除该关系。或者,如果引用是Collection的一部分,则将其从集合中删除。您必须确保从两侧删除对象引用。例如,如果A持有对B的引用而B持有对A的引用,则必须删除A对B的引用以及B对A的引用。