Neo4J中的无向关系

Neo4J中的无向关系,neo4j,cypher,spring-data,spring-data-neo4j,Neo4j,Cypher,Spring Data,Spring Data Neo4j,我使用Spring数据Neo4J来定义不同人员之间的无向关系。下面提供了一个示例实体类 @NodeEntity(label="Person") public class Person { @GraphId private Long id; private String name; @Relationship(type = "FRIEND_WITH", direction=Relationship.UNDIRECTED) List<Person&g

我使用Spring数据Neo4J来定义不同人员之间的无向关系。下面提供了一个示例实体类

@NodeEntity(label="Person")
public class Person {

    @GraphId
    private Long id;
    private String name;

    @Relationship(type = "FRIEND_WITH", direction=Relationship.UNDIRECTED)
    List<Person> friends;
}
因为关系是无方向的

但当我质疑时,在Neo4J中

MATCH (p:Person)-[r:FRIEND_WITH]->(b:Person) where p.name = "PersonA" return p,b
我以PersonA,PersonB的身份得到结果。但当我质疑的时候

MATCH (p:Person)-[r:FRIEND_WITH]->(b:Person) where p.name = "PersonB" 
不返回任何行。因此,实体类中指定的方向似乎不起作用。Neo4J浏览器中的图形还显示了从角色到角色B的定向边

我想要的是,如果PersonA是PersonB的朋友,那么无论我以何种方式询问,我都会得到结果。该代码似乎适用于

MATCH (p:Person)-[r:FRIEND_WITH]-(b:Person) where p.name = "PersonB" 
其中“->”替换为“-”,但我不想使用这个

我该怎么办


我正在使用spring-data-neo4j.version 4.0.0.RELEASE和spring-boot-version spring-boot-starter父级1.3.0.M5,在neo4j中,所有关系都是直接的

但是,在查询时可以有无向边的概念。只需从匹配查询中删除方向:

MATCH (p:Person)-[r:FRIEND_WITH]-(b:Person) where p.name = "PersonB" 

你为什么不想用这个?

是的,我可以,但是“方向=关系.无方向”有什么用?然后SDN会为你选择一个方向。双向关系不好顺便说一句,它能形象化为无向边吗?
MATCH (p:Person)-[r:FRIEND_WITH]-(b:Person) where p.name = "PersonB" 
MATCH (p:Person)-[r:FRIEND_WITH]-(b:Person) where p.name = "PersonB"