使用Spring在Neo4j中传递参数以匹配查询

cbjzeqam  于 2022-12-12  发布在  Spring
关注(0)|答案(2)|浏览(419)

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

@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}
但是它返回空值。但是,如果我用实际的技术名称,它工作的很好。

hgtggwj0

hgtggwj01#

将参数作为WHERE n.name =~ {0}传递。实际情况是参数不是从字符串中替换的,因此参数在查询中没有绑定,而是搜索字符串文字“{0}”,但总是失败。
如果你想把一个正则表达式作为参数传递,你需要把“(?i)”部分放在要传递的字符串中,有效地让你的代码决定正则表达式,而不仅仅是它里面的字符串。

idfiyjo8

idfiyjo82#

您需要将正则表达式部分与参数部分分开,如下所示:

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

就像你在Neo4j中连接的那样。

相关问题