neo4j的Spring如何注入Neo4jRepository
我在官方文档中看到的所有示例都继承自neo4j的Spring如何注入Neo4jRepository,neo4j,spring-data-neo4j,Neo4j,Spring Data Neo4j,我在官方文档中看到的所有示例都继承自Neo4jRepository,而不是注入 我还看到可以使用@Query(“match…”)运行查询注释。我不想运行@Query,因为我需要在运行时生成查询 我如何注入像Neo4jRepository这样的东西,并在我的bean中用于运行查询等 感谢在Spring Data Neo4j中,您无法通过存储库运行运行时定义的查询。您可以通过会话运行CYPHER查询,这里有两个选项: 1.Neo4j OGM OGM是Neo4j提供的对象图映射库。简而言之,您可以通过
Neo4jRepository
,而不是注入
我还看到可以使用@Query(“match…”)运行查询注释。我不想运行@Query
,因为我需要在运行时生成查询
我如何注入像Neo4jRepository
这样的东西,并在我的bean中用于运行查询等
感谢在Spring Data Neo4j中,您无法通过存储库运行运行时定义的查询。您可以通过会话运行CYPHER查询,这里有两个选项:
1.Neo4j OGM
OGM是Neo4j提供的对象图映射库。简而言之,您可以通过Neo4jSessionFactory
创建会话
,并运行查询,将图形数据转换为对象,与存储库
相同
您可以初始化工厂:
private SessionFactory sessionFactory = new SessionFactory(configuration, "path.to.domains.package");
然后在需要时打开会话:
public Session getNeo4jSession() {
return sessionFactory.openSession();
}
阅读更多关于和
2.Neo4j驱动程序
这是一种类似于使用查询SQL的方法。您可以通过Driver
创建会话,并从查询中获取原始数据。下面是一个服务示例,它可以帮助您执行简单的转换:
@组件
公共类Neo4jBoltCypherExecutor实现了CypherExecutor{
@org.springframework.beans.factory.annotation.Value(“${neo4j.bolt.url}”)
私有字符串地址;
@org.springframework.beans.factory.annotation.Value(“${neo4j.bolt.user}”)
私有字符串用户;
@org.springframework.beans.factory.annotation.Value(“${neo4j.bolt.pass}”)
私人串通;
私人司机neo4jDriver;
@施工后
施工后公共空间(){
AuthToken token=(pass!=null&&!pass.isEmpty())?AuthTokens.basic(用户,pass):AuthTokens.none();
neo4jDriver=图形数据库
.driver(boltUrl、令牌、Config.build().withEncryptionLevel(Config.EncryptionLevel.NONE)
.toConfig());
}
@凌驾
公共列表运行(字符串查询、映射参数){
try(Session Session=neo4jDriver.Session()){
返回session.run(查询,参数).list(r->r.asMap(Neo4jBoltCypherExecutor::convert));
}
}
静态私有对象转换(值){
开关(value.type().name()){
案例“路径”:
返回值.asList(Neo4jBoltCypherExecutor::convert);
案例“节点”:
案例“关系”:
返回值.asMap();
}
返回值.asObject();
}
}
阅读更多关于的内容,非常感谢!