Neo4j 自定义 Cypher @Query 包含 RegEx returns 无结果

Neo4j custom Cypher @Query containing RegEx returns no result

我的 Neo4jRepository 中有以下自定义查询(我正在使用 Spring Boot with Spring Data Neo4j):

@Query("MATCH (n:Component) WHERE n.path =~ '/path/{0}/.*/{1}' RETURN n")
Component findByTenantAndName(String tenant, String name);

当我 运行 在应用程序中进行此查询时 returns null 具有以下日志语句:

2018-01-12 10:58:27.744  INFO 74294 --- [nio-8080-exec-1] o.n.o.drivers.bolt.request.BoltRequest   : Request: MATCH (n:Component) WHERE n.path =~ '/path/{0}/.*/{1}' RETURN n with params {0=foo, 1=baz}
2018-01-12 10:58:27.763  WARN 74294 --- [nio-8080-exec-1] d.c.a.service.MyService  : Could not find parent component named 'baz' for tenant 'foo'

但是,如果我在 http://localhost:7474 和 运行 访问 Cypher 后端,查询:

MATCH (n:Component) WHERE n.path =~ '/path/foo/.*/baz' RETURN n

我正好得到一个 Component 结果,路径为 /path/foo/bar/baz。我的自定义查询有什么问题?

@Query("MATCH (n:Component) WHERE n.path =~ {0} RETURN n")
Component findByTenantAndName(String query);

并且来自您调用它的服务。像这样传递整个正则表达式

String query = "/path/<tenant>/.*/<name>"; // replace tenant and name with actual variables.
findByTenantAndName(query)