/ / like演算子を使用してneo4j Cypher Queryで動的パラメータを渡す方法 - java、regex、neo4j、cypher、spring-data-neo4j

neo4jの動的パラメータを渡す方法Cypherのような演算子を使ったクエリ - java、regex、neo4j、cypher、spring-data-neo4j

私はSpringデータのneo4jからlike演算子を使ってneo4j Cypher Queryにパラメータを渡しています。 like操作でパラメータを渡す正しい方法を教えてください。

Map<String, Object> map = new HashMap<String, Object>();
map.put(queryAfterSubstutuet(collabVo),
groupIdAfterSubstituet(collabVo));
map.put("display_name",input);
Result<Map<String, Object>> result = neoOperation.query(
collabVo.getSearchQuery(), map);

その私のgetSearchQuery

MATCH (n:OrganizationUnit {id:{class}})-[r:PART]-(c)-[r1:STUDENTROLE]-(f) where f.firstName =~"{display_name}.*"  RETURN f

しかし、それはスローエラーです

 Caused by: java.util.regex.PatternSyntaxException: Illegal repetition
[STDERR] {display_name}.*
[STDERR]    at java.util.regex.Pattern.error(Pattern.java:1924)
[STDERR]    at java.util.regex.Pattern.closure(Pattern.java:3104)
[STDERR]    at java.util.regex.Pattern.sequence(Pattern.java:2101)
[STDERR]    at java.util.regex.Pattern.expr(Pattern.java:1964)
[STDERR]    at java.util.regex.Pattern.compile(Pattern.java:1665)
[STDERR]    at java.util.regex.Pattern.<init>(Pattern.java:1337)
[STDERR]    at java.util.regex.Pattern.compile(Pattern.java:1022)

回答:

回答№1は2

クエリを次のように変更したとします。

MATCH (n:OrganizationUnit {id:{class}})-[r:PART]-(c)-[r1:STUDENTROLE]-(f)
where f.firstName =~{display_name} RETURN f

そしてあなたのパラメータに追加

map.put("display_name",input);

inputにフルパターン(input = "nameToMatch。*"など)が含まれている場合は、これでうまくいきます。