我正在报告将项目从 Spring Boot 版本 2.0.3.RELEASE 升级到版本 2.0.4.RELEASE 时发生的错误。
我在项目中使用 Spring Data Neo4j 并包含spring-boot-starter-data-neo4j
依赖项。从 Spring Boot 版本 2.0.4 开始,启动器似乎提供了 Spring Data Neo4j 版本 5.0.9.RELEASE。 Spring Data Neo4j的POM定义了要使用的Neo4j OGM版本3.0.4,请参见此处:https: //github.com/spring-projects/spring-data-neo4j/blob/5.0.9.RELEASE/pom.xml
但是Spring Boot 2.0.4的BOM定义了Neo4j OGM版本3.1.0,请参见这里:https: //github.com/spring-projects/spring-boot/blob/v2.0.4.RELEASE/spring-boot-project /spring-boot-dependencies/pom.xml
这里真正令人烦恼的问题是,这不仅是“正式”不匹配,而且我在这个新版本星座中遇到了奇怪的运行时错误。当使用像我这样的查询方法查询 Spring Data 存储库时,findByUserId(String userId)
突然出现以下异常:
java.lang.ClassNotFoundException: org.neo4j.ogm.cypher.Filter$NestedPathSegment
调查问题我发现内部类NestedPathSegment
存在于 Neo4j OGM 版本高达 3.0.4 中,请参见此处:https: //github.com/neo4j/neo4j-ogm/blob/v3.0.4/core/src/ main/java/org/neo4j/ogm/cypher/Filter.java
但后来它突然在由 Spring Boot 管理的 Neo4j OGM 版本 3.1.0 中消失了,请参见这里:https://github.com/neo4j/neo4j-ogm /blob/v3.1.0/core/src/main/java/org/neo4j/ogm/cypher/Filter.java
也许这就是 Spring Data Neo4j 项目迄今为止尚未迁移到该版本的原因。
我通过覆盖 Neo4j OGM 版本以强制使用 3.0.4 来解决该问题,以符合 Spring Data。我这样做gradle.properties
:
neo4j-ogm.version=3.0.4
我不确定您的地址中的问题是否正确,因为 Neo4j OGM 项目似乎与其实现不一致。