由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的真正旧版本(低于3.0)。
在neo4j 3.0中,{foo}
语法为deprecated,而$foo
语法为优。在neo4j 4.0中,{foo}
语法完全为removed。
而不是尝试支持过时的{foo}
语法,应将neo4j安装升级到neo4j的更新版本(最好是最新版本)。如果您有要升级的数据,则必须分两个步骤进行升级: