The Cypher generated by spring data neo4j uses "$" to pass value, which will cause a error of Invalid Syntax by neo4j.
For example:
The Cypher generated by spring data neo4j for:
Optional<linkType> findById(Long id);
is
"MATCH ()-[r0:`linkType`]->() WHERE ID(r0)=$id WITH r0,STARTNODE(r0) AS n, ENDNODE(r0) AS m RETURN r0,n,m, ID(r0)"
This gets a error of Invalid Syntax. I fixed this by use @Query:
@Query("MATCH ()-[r0:`linkType`]->() WHERE ID(r0)={id} WITH r0,STARTNODE(r0) AS n, ENDNODE(r0) AS m RETURN r0,n,m, ID(r0)")
Optional<linkType> findById(Long id);
However, when I want to use the PagingAndSortingRepository, I cannot use the @Query to fix this problem. Because it will add SKIP $sdnSkip LIMIT $sdnLimit
at the edn automaticaly.
How can I fix this problem? Thanks.
{foo}
syntax was deprecated in favor of the$foo
syntax. In neo4j 4.0, the{foo}
syntax was totally removed. – cybersam