проблема параметризованного запроса при использовании org.springframework.data.neo4j.repository - PullRequest
0 голосов
/ 18 октября 2018
@Query("match p=(self:Person {id:{id}})-[*1..{distance}]-(N) return collect(N)")
PersonConn findNeighbor2(@Param("id") String id,@Param("distance") String distance);

мой первый идентификатор параметра работает хорошо, но когда я добавляю параметр расстояния и запускаю запрос. Я получил синтаксическую ошибку, как показано ниже

org.neo4j.ogm.exception.CypherException: Error executing Cypher "Neo.ClientError.Statement.SyntaxError"; Code: Neo.ClientError.Statement.SyntaxError; Description: Parameter maps cannot be used in MATCH patterns (use a literal map instead, eg. "{id: {param}.id}") (line 1, column 38 (offset: 37))

"match p = (self: Person {id): {id}}) - [* 1 .. {distance}] - (N)

как я могу это исправить?

1 Ответ

0 голосов
/ 18 октября 2018

Вы не можете передавать встроенные литералы глубины в качестве параметров, однако вы можете изменить свой запрос на:

@Query("match p=(self:Person {id:{id}})-[*]-(N) WHERE length(p) <= {distance} return collect(N)")
PersonConn findNeighbor2(@Param("id") String id,@Param("distance") String distance);
...