Grails Neo4j插件支持哪些版本?对接Neo4j 4.3.1出现Cypher语法错误
你遇到的问题确实是Neo4j版本和Grails Neo4j GORM插件版本不兼容导致的。
问题根因
Neo4j从4.0版本开始,完全废弃了旧版Cypher查询中{参数名}格式的占位符语法,要求所有参数占位符统一使用$参数名格式。你报错日志里提到的LIMIT {1}就是你当前使用的低版本GORM插件生成的旧语法,自然会被Neo4j 4.3.1服务端识别为非法语句抛出错误。
你用到的示例项目依赖的是旧版Grails Neo4j GORM插件,这类插件最高只支持到Neo4j 3.x版本,适配4.x及以上版本需要升级插件版本。
解决办法
你可以任选一种方案处理:
- 直接将Neo4j版本降级到3.5.x系列,无需修改项目任何代码,重新配置连接即可正常运行
- 升级项目中的Grails Neo4j GORM插件到7.0及以上版本,这类版本已经完成了Neo4j 4.x语法适配,注意升级插件时要同步调整Grails框架版本到对应兼容范围,避免出现依赖冲突
- 临时验证可以先去掉分页逻辑,直接返回全量数据确认基础功能正常,比如把控制器里的
petService.list(params)改为Pet.list(),删除max参数赋值逻辑,如果能正常返回就可以完全确认是占位符语法不兼容的问题
内容的提问来源于stack exchange,提问作者Peter Kelley
相关产品推荐
相关产品推荐

