Spring data neo4j:Cypher中的无效语法'$'。如何用'{}'替换'$'?

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

由spring数据neo4j生成的密码使用“ $”传递值,这将导致neo4j产生无效语法错误。

例如:

由弹簧数据neo4j为以下项生成的密码:

Optional<linkType> findById(Long id);

"MATCH ()-[r0:`linkType`]->() WHERE ID(r0)=$id WITH r0,STARTNODE(r0) AS n, ENDNODE(r0) AS m RETURN r0,n,m, ID(r0)"

这将显示无效语法错误。我通过使用@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);

但是,当我想使用PagingAndSortingRepository时,我无法使用@Query来解决此问题。因为它将自动在edn处添加SKIP $sdnSkip LIMIT $sdnLimit

如何解决此问题?谢谢。

neo4j cypher spring-data-neo4j
1个回答
1
投票

您使用的是Neo4j的真正旧版本(低于3.0)。

在neo4j 3.0中,{foo}语法为deprecated,而$foo语法为优。在neo4j 4.0中,{foo}语法完全为removed

而不是尝试支持过时的{foo}语法,应将neo4j安装升级到neo4j的更新版本(最好是最新版本)。如果您有要升级的数据,则必须分两个步骤进行升级:

© www.soinside.com 2019 - 2024. All rights reserved.