Spring Data Neo4j is not a valid entity class. Please check the entity mapping

Posted 在咖啡里溺水的鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Data Neo4j is not a valid entity class. Please check the entity mapping相关的知识,希望对你有一定的参考价值。

先抛结论

究竟是什么原因引发的,确实没排查出来。
解决方案,在POM文件中主动引入 fast-classpath-scanner 比较新的版本,问题解决。

问题

SpringBoot 2.1.1 集成 Spring Data Neo4j 保存一个节点的时候报错,提示 XXX is not a valid entity class. Please check the entity mapping。

诡异之处在于,在IDE环境中没有任何问题(IDEA、Eclipse均正常),只有maven打包之后会有这个问题。

网上查了很多,都说是 SessionFactor y配置的包扫描路径有问题,但反复确认过不是。

排查

此处省略2个白天和2个晚上的加班……

发现打包启动的时候有一堆警告,提示 Neo4j Entity 类中的 Property 找不到 Owning Class。

最终无奈在IDEA里对本地启动的Jar包进行调试,追踪到了一个 名为 FastClasspathScanner 的类,作用是用来扫描Classpath里的Jar包和类的,发现打包后Jar包启动时这个类没有办法扫到Neo4j的Entity类。

此处省略2个小时……

追踪了半天也没有发现引发问题的原因是什么,考虑了一下会不会是该类库本身的bug。

在POM文件中手动引入该类,并指定版本为2.21.(Spring Data Neo4j里引入的大版本是2, 2.21是2版本中的最后一个版本,再往后的版本貌似差异比较大,引入之后会提示找不到类)

 <!-- https://mvnrepository.com/artifact/io.github.lukehutch/fast-classpath-scanner -->
<dependency>
    <groupId>io.github.lukehutch</groupId>
    <artifactId>fast-classpath-scanner</artifactId>
    <version>2.21</version>
</dependency>

问题解决……

结论

究竟是什么原因引发的,确实没排查出来。

解决方案,在POM文件中主动引入 fast-classpath-scanner 比较新的版本,问题解决。

以上是关于Spring Data Neo4j is not a valid entity class. Please check the entity mapping的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data REST Neo4j 创建关系

Neo4j 和 Spring-data Map 查询结果到 Jackson JsonNode

spring boot 2.0 neo4j 使用

IgnoreCase Finder 不适用于 Spring Data Rest 和 Neo4J

Connection is read-only. Queries leading to data modification are not allowed 错误原因

Neo4j:不知道如何将图形映射到 Spring Data bean