Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用嵌入式驱动程序时,将过程部署到Neo4J_Java_Neo4j_Spring Data Neo4j 4 - Fatal编程技术网

Java 使用嵌入式驱动程序时,将过程部署到Neo4J

Java 使用嵌入式驱动程序时,将过程部署到Neo4J,java,neo4j,spring-data-neo4j-4,Java,Neo4j,Spring Data Neo4j 4,我有一些需要直接节点访问neo4j的逻辑,但为了简单起见,应用程序的其余部分使用SpringDataNeo4j(SDN)。我想使用@procedure的过程,但我不确定在使用neo4j嵌入式驱动程序和SDN4时如何使用该过程。我的配置非常简单,如下所示: @Configuration @EnableNeo4jRepositories(basePackages = "recommender.repository") @ComponentScan(basePackages = "recommende

我有一些需要直接节点访问neo4j的逻辑,但为了简单起见,应用程序的其余部分使用SpringDataNeo4j(SDN)。我想使用@procedure的过程,但我不确定在使用neo4j嵌入式驱动程序和SDN4时如何使用该过程。我的配置非常简单,如下所示:

@Configuration
@EnableNeo4jRepositories(basePackages = "recommender.repository")
@ComponentScan(basePackages = "recommender")
@EnableTransactionManagement
public class MyNeo4jConfiguration extends Neo4jConfiguration {

@Bean
public SessionFactory getSessionFactory() {

    System.out.println("******* GET SESSION FACTORY!!!!");
    // with domain entity base package(s)
    return new SessionFactory("recommender.model");
}

// needed for session in view in web-applications
@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Session getSession() throws Exception {
    return super.getSession();
}
使用此处的属性文件:

#EmbeddedSetup
driver=org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
#URI=file:/neo4j/data/graph.db

通过这种设置,我可以将带有@Procedure和@Context(用于db访问)的类放在何处,SDN的实现在war部署期间可以访问它

SDN本身没有为您管理过程的功能。 但是,有一种方法可以访问底层GraphDatabaseService:

 EmbeddedDriver embeddedDriver = (EmbeddedDriver) Components.driver();
 GraphDatabaseService databaseService = embeddedDriver.getGraphDatabaseService();
使用此选项,您可以注册您的过程

((GraphDatabaseAPI) getDatabase()).getDependencyResolver().resolveDependency(Procedures.class).register(YourProcedure.class);

但是,不确定这是否适用于应用程序类路径中的过程类-值得一试。

为清楚起见,请添加
getDatabase()
的来源,getDatabase()将返回前面几行中设置的databaseService