Upgrade of spring data neo4j 3.x to 4.x Relationship Operations
在 Spring data neo4j 3.x 中创建两个节点之间的关系,并且关系包含一组属性,这些属性之前由 apis 用于实现这一点
1
2 3 4 5 6 7 8 |
create :
n4jOperations.createRelationshipBetween(Object start, Object end, Class<R> relationshipEntityClass, String relationshipType, boolean allowDuplicates); delete: get: |
但迁移后我没有找到上面的api
根据文档说
1
2 3 4 5 6 7 8 9 |
@NodeEntity
public class Student { private String name; @Relationship(type =”ENROLLED”) By repo.save(Student); |
//关系创建是可能的,但新的api如何在下面的用例中实现
1.如何避免重复创建关系?
2.get 两个节点之间的关系?
2.删除两个节点之间的关系?
SDN 4 不提供像直接设置节点和关系这样的低级图形操作。
图中的关系是使用域类中的对象引用来建模和操作的。它们有两种风格:隐式和显式。隐式关系通过两个节点实体之间的简单引用来描述,例如客户和地址:
1
2 3 4 5 |
class Customer {
@Relationship(type=”LIVES_AT”) Address address; // implied (:Customer)-[:LIVES_AT]->(:Address) … } |
显式关系使用RelationshipEntity 对象建模,并且允许具有属性(但不是必须)。它们仍然作为您的域模型中的引用进行访问。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Person {
@Relationship(type=”RATED”) List<Rating> ratings } class Movie { @RelationshipEntity(type=”RATED”) int stars; |
注意:如果您不需要特定关系的属性,则不需要使用RelationshipEntity。
回答您的具体问题:
1) SDN 4.0 不会创建重复的关系。无论您将特定对象引用保存多少次,它都将仅由图中的一个关系表示。
2) 希望现在清楚了!
3) 将对象引用设置为 null 并保存父对象将删除关系。或者,如果引用是 Collection 的一部分,则将其从集合中删除。您必须确保从两侧删除对象引用。例如,如果 A 持有对 B 的引用,而 B 持有对 A 的引用,则必须删除 A 对 B 的引用以及 B 对 A 的引用。
- 这也可能有帮助:docs.spring.io/spring-data/data-neo4j/docs/current/reference??/…
- 您能否分享一个链接,以使用弹簧数据而不是通过查询来删除关系船的工作示例
来源:https://www.codenong.com/33015714/