gpt4 book ai didi

java - 在SDN 5.0.0中创建neo4j sessionfactory

转载 作者:行者123 更新时间:2023-11-30 02:21:08 26 4
gpt4 key购买 nike

背景

我有一个 Maven、Spring data Neo4j 项目。它发布并获取单个对象。我正在尝试添加 session ,但遇到错误。

有文档:https://docs.spring.io/spring-data/neo4j/docs/current/reference/html/#reference:session

他们建议:

@Configuration
@EnableNeo4jRepositories(basePackages = "org.neo4j.example.repository")
@EnableTransactionManagement
public class MyConfiguration {

@Bean
public SessionFactory sessionFactory() {
// with domain entity base package(s)
return new SessionFactory(configuration(), "org.neo4j.example.domain");
}

@Bean
public org.neo4j.ogm.config.Configuration configuration() {
ConfigurationSource properties = new ClasspathConfigurationSource("ogm.properties");
org.neo4j.ogm.config.Configuration configuration = new org.neo4j.ogm.config.Configuration.Builder(properties)
return configuration;
}

@Bean
public Neo4jTransactionManager transactionManager() {
return new Neo4jTransactionManager(sessionFactory());
}

}

但是当我复制第二个 @Bean 时,我的 Eclipse 将: new org.neo4j.ogm.config.Configuration.Builder(properties) 标记为红色,并建议我将类型配置更改为 Builder。然后不断建议更改,直到第二个 @Bean 看起来像:

@Bean
public Builder configuration() {
ConfigurationSource properties = new ClasspathConfigurationSource("ogm.properties");
Builder configuration = new org.neo4j.ogm.config.Configuration.Builder(properties);
return configuration;
}

但是第一个 @Bean 停止工作,因为它需要一个 configuration()

问题

那么,当当前文档的建议不起作用时,如何添加 session 工厂?我看过许多其他示例,但它们都使用旧版本和已弃用的内容,例如 Neo4jConfiguration

注释

我的 pom.xml 没有父级以及这些依赖项和存储库:

  <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
<version>5.0.0.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.0.M3</version>
</dependency>



<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>2.0.0.M3</version>
</dependency>

<dependency>
<groupId>com.voodoodyne.jackson.jsog</groupId>
<artifactId>jackson-jsog</artifactId>
<version>1.1</version>
<scope>compile</scope>
</dependency>



</dependencies>



<repositories>
<repository>
<id>spring-libs-release</id>
<name>Spring Releases</name>
<url>https://repo.spring.io/libs-release</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

更新1

删除所有@Bean并尝试此人设置:Why does Neo4j OGM with Spring Boot 2.0.0.M4 apparently require the embedded driver?像这样:

@Configuration
@EnableNeo4jRepositories("com.myproject.repository")
@EnableTransactionManagement
public class ServiceRegistryConfiguration {

@Bean
public org.neo4j.ogm.config.Configuration configuration() {
return new org.neo4j.ogm.config.Configuration.Builder(new ClasspathConfigurationSource("ogm.properties")).build();
}
@Bean
public SessionFactory sessionFactory() {
return new SessionFactory(configuration(), "com.myproject.domain");
}

}

导致此错误:

 ...Factory method 'configuration' threw exception; nested exception is java.lang.NullPointerException

我的ogm.properties 文件是:

server.port=8585
spring.data.neo4j.uri=bolt://localhost
spring.data.neo4j.username=myuser
spring.data.neo4j.password=mypass

最佳答案

您的初始配置看起来不错,除了构建器实例化后缺少 .build() (这是文档中的拼写错误)。

所以配置初始化应该是:

new org.neo4j.ogm.config.Configuration.Builder(properties).build();

关于第二点:你不能混合SDN风格配置和Spring Boot自动配置。

要么您使用SDN风格(如第一个代码片段中所示),并且ogm.properties文件如下所示:

URI=bolt://localhost
username=myUser
password=myPassword

示例 here

或者您使用Spring Boot自动配置,则无需在配置类中声明配置、sessionFactory和事务管理器。只需用

注释配置即可
@EnableNeo4jRepositories("com.myproject.repository")
@EntityScan(basePackages = "com.myproject.domain")

并使用 Spring Boot 属性格式:

spring.data.neo4j.uri=bolt://localhost
spring.data.neo4j.username=myuser
spring.data.neo4j.password=mypass

示例 here

关于NullPointerException:这是因为在类路径中找不到ogm.properties文件。

关于java - 在SDN 5.0.0中创建neo4j sessionfactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46812619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com