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();
}
}

阅读更多关于

的内容,非常感谢!