如下图节点1的二度人脉应该是4和5,但是我用MATCH (n:Person {name:“1”})-[]-()-[r]-(m) RETURN m,r查到的结果无法反应4和5之间的关系。 使用spring data neo4j domain.java
@NodeEntity(label = “Person”) public class PersonTest { @Id private Long id; @Property(name = “name”) private String name; @Relationship(type = “Follow”) //direction=Relationship.DIRECTION private List<PersonTest> friends; Repository.java
public interface PersonRepository extends Neo4jRepository<PersonTest,Long> { @Query(“MATCH (n:Person {name:{name}})-[]-()-[r]-(m) RETURN m,r”) Collection<PersonTest> graph(@Param(“name”) String name); } Service.java
Collection<PersonTest> persons = personRepository.graph(name); Iterator<PersonTest> result = persons.iterator(); while (result.hasNext()) { for (PersonTest friend : p.getFriends()) { //这里会获取到4和5 的朋友,分别是2和3,根本不知道4和5是什么关系。 } }
怎么解决这个问题呀?难道要将4和5再次弄到neo4j中查询他们之间的关系?????neo4j本身查询界面那儿是直接将4和5之间的关系都查询出来了,他是怎么做到的呢?恳请大佬解惑,不胜感激!