使用Spring将参数传递给Neo4j中的Match查询

时间:2018-07-13 13:13:41

标签: spring-boot neo4j cypher

我正在尝试将Neo4j数据库中的节点名称与给定的技术名称进行比较。我正在使用Spring Application。

@Query("MATCH (n) WHERE n.name =~ '(?i){0}' RETURN n.name")
    String getTechnology(String technologyname);

请求就像

MATCH (n)
WHERE n.name =~ '(?i){0}'
RETURN n.name

带有参数{0=AVM}

但是它返回null。但是,如果我使用实际的技术名称,它就可以正常工作。

1 个答案:

答案 0 :(得分:0)

将参数传递为WHERE n.name =~ {0}。发生的情况是该参数未从字符串内部替换,因此该参数在查询中没有绑定,而是在搜索始终失败的字符串文字“ {0}”。

如果要将正则表达式作为参数传递,则需要在要传递的字符串中放入“(?i)”部分,从而有效地让您的代码确定正则表达式,而不仅仅是内部的字符串。