如何在spring数据neo4j中传递关系查询参数

时间:2018-06-12 06:26:26

标签: spring spring-boot neo4j spring-data-neo4j-4

以下面的年度报告返回错误。

   @Query(value ="MATCH (n:Phone {phoneId:{0}})-[f:calling*0..2]-(m) 
   OPTIONAL MATCH (m)-[r]-() return m,r")  
   List<QueryPOJO> grapht_2(String name,int level);

   @Query(value ="MATCH (n:Phone {phoneId:{0}})-[f:calling*0..3]-(m) 
   OPTIONAL MATCH (m)-[r]-() return m,r")  
   List<QueryPOJO> grapht_3(String name,int level);

描述:参数图不能用于MATCH模式(改为使用文字图,例如“{id:{param} .id}”)(第1行,第45栏(偏移:44))

我们需要一种优雅的方法来解决这个问题,而不是编写许多接口。

   MATCH (n:Person {name:'AAA'})-[f]-(m) where type(f)="Follow" OPTIONAL MATCH (m)-[r]-() return m,r

cypher无法解决关卡问题。

{{1}}

2 个答案:

答案 0 :(得分:1)

您可能需要求助于“手动”将Cypher语句构造为String并通过Session执行它,这允许通过其query,queryForObject和queryForObjects方法执行任意Cypher查询。

答案 1 :(得分:0)

Cypher不像以前那样支持对关系的限制。您可以尝试使用function length()来限制路径的长度,如下所示:

MATCH p=(n:Phone {phoneId:{0}})-[f:calling]-(m) OPTIONAL MATCH (m)-[r]-() where length(p)<{1} return m,r

Function length()获取路径的长度。引用this,#Path函数。