我是Neo4j的新手。 我在spring应用程序中通过spring-data-neo4j使用它。 当我启动应用程序时,通常但并非总是如此,第一个数据库查询会给我一条消息:
java.lang.NullPointerException: null at
org.neo4j.ogm.drivers.bolt.request.BoltRequest.executeRequest(BoltRequest.java:149)
~[neo4j-ogm-bolt-driver-3.1.5.jar:3.1.5] at
org.neo4j.ogm.drivers.bolt.request.BoltRequest.execute(BoltRequest.java:135)
或
java.lang.NullPointerException: null at
org.neo4j.ogm.metadata.reflect.EntityAccessManager.getIterableField(EntityAccessManager.java:431)
~[neo4j-ogm-core-3.1.5.jar:3.1.5] at
org.neo4j.ogm.context.GraphEntityMapper.mapOneToMany(GraphEntityMapper.java:550)
我怀疑这是会话的问题,因为如果我在此之后立即调用相同的代码部分,则会收到错误消息,该错误不再发生,并且在重新启动应用程序之前不会再发生。 同样,它不会在所有第一个查询中发生:有时我启动了应用程序,并且处理了第一个(和后续)查询而没有任何错误。
我试图延迟第一次查询调用,但是似乎没有效果。
这是我的Neo4j配置:
@Configuration
@EnableNeo4jRepositories("com.myApp.data.repository")
@EnableTransactionManagement
@EntityScan("com.myApp.data.model")
public class Neo4JConfig {
public static final String URL = "bolt://neo4j:myApp@localhost";
@Bean
public org.neo4j.ogm.config.Configuration getConfiguration() {
org.neo4j.ogm.config.Configuration configuration = new Builder().uri(URL).build();
return configuration;
}
@Bean
public SessionFactory sessionFactory() {
return new SessionFactory(getConfiguration(), "com.myApp.data.model");
}
@Bean
public Neo4jTransactionManager transactionManager() {
return new Neo4jTransactionManager(sessionFactory());
}
}
还有我的pom.xml:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
所有数据库部分都在单独的模块中(上面带有config和pom)。
关于这里发生的事情有什么想法吗?
Thx