如何在Spring Boot中向@Query传递字符串列表?

问题描述 投票:1回答:1

我试图在Spring Boot中向Neo4j的@Query注解传递搜索算法的多个单词。以下是我的尝试。

@Query("WITH [{search}] AS sarray "
     + "MATCH (a:Node) "
     + "WHERE ALL(s IN sarray WHERE a.name=~('(?i).*'+s+'.*') " // <- This is known good regex
//The rest of the query which is known good

这个查询在Neo4j的web界面中可以完美地工作,就像这样。

WITH ["some","search","terms"] AS sarray

我试过的是:

  • 传入一个单一的字符串,在多个单词之间用逗号隔开
  • 向{search}变量中传递一个ArrayList。
  • 向{search}变量中传递一个数组。
  • 去掉注释中的方括号
  • 可能还有其他的东西也没有用上。

我得到的错误是 "无效的Regex:在索引5(?i)附近的非法重复。{search}.^"

在更改查询以包含多个单词之前,这个regex确实有效。

java spring spring-boot cypher spring-data-neo4j
1个回答
0
投票

你可以试试这个。

@Query("MATCH (u:User) WHERE u.id in $ids RETURN u.id as id")
List<String> findByIdIn(@Param("ids") List<String> ids);
© www.soinside.com 2019 - 2024. All rights reserved.