1

在Spring数据Neo4j的3.x的两个节点之间建立关系,船舶和关系包含设置较早使用API​​来实现这一性能的升级弹簧数据的Neo4j 3.X的到4.x关系操作

​​

但迁移之后我didnt't发现上面的API

按文档说

@NodeEntity 
public class Student { 
    private String name; 

    @Relationship(type = "ENROLLED") 
    private Set<Enrollment> enrollments;  
} 

By repo.save(Student); 

//创建的关系是可能的,但新的API的我如何能实现以下使用案例

1.如何避免重复关系创建?

2.get两个节点之间的关系?

2.删除两个节点之间的关系?

回答

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,保存父对象将删除的关系。或者,如果引用是集合的一部分,则将其从集合中删除。您必须确保从两侧删除对象引用。例如,如果A持有对B的引用,B持有对A的引用,则必须删除A对B的引用以及B对A的引用。

+0

您可以共享3点工作示例的链接 –

+0

这也可能帮助:http://docs.spring.io/spring-data/data-neo4j/docs/current/reference/html/#migration – ATG

+0

你可以分享一个链接工作示例删除关系使用弹簧数据而不是查询 –