Spring Data Neo4j:使用嵌入式服务器

时间:2013-04-09 14:39:15

标签: neo4j spring-data-neo4j

我正在尝试配置我的应用程序上下文,以便能够在我的应用程序中使用带有嵌入式图形的Neo4j服务器,但没有取得多大成功。我同时使用Spring Data(Mongo和Neo4j存储库方法)。这是我的应用程序上下文,它没有运行:

<context:component-scan base-package="org.domain.team.project.*"/>

<mongo:repositories base-package="org.domain.team.project.data.repositories.mongodb"/>

    <!-- Neo4j -->
    <!--  <neo4j:config storeDirectory="/data/production/graph.db"/> -->
    <neo4j:repositories base-package="org.domain.team.project.data.repositories.neo4j"/>

    <neo4j:config graphDatabaseService="graphDatabaseService" />
    <bean id="graphDatabaseService" class="org.neo4j.kernel.EmbeddedGraphDatabase"
    destroy-method="shutdown">
        <constructor-arg index="0" value="/data/production/graph.db" />
        <constructor-arg index="1">
            <map><entry key="enable_remote_shell" value="true"/></map>
        </constructor-arg>
    </bean>
    <bean id="serverWrapper" class="org.neo4j.server.WrappingNeoServerBootstrapper" 
        init-method="start" destroy-method="stop">
            <constructor-arg ref="graphDatabaseService"/>
    </bean>

如果我不使用这种方法并只指定商店目录(注释行),一切运行正常。我怀疑它是SDN和neo4j-server问题之间的版本。这是我的POM:

  <properties>
    <spring.data.mongo.version>1.1.0.RELEASE</spring.data.mongo.version>
    <spring.data.neo4j.version>2.1.0.RELEASE</spring.data.neo4j.version>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>${spring.data.mongo.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-neo4j</artifactId>
        <version>${spring.data.neo4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.neo4j.app</groupId>
        <artifactId>neo4j-server</artifactId>
        <version>1.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.neo4j.app</groupId>
        <artifactId>neo4j-server</artifactId>
        <classifier>static-web</classifier>
        <version>1.8.2</version>
    </dependency>
  </dependencies>

它的父作为依赖Spring(核心,上下文,测试)3.2.0发布。

显示的具体错误是:

Caused by: java.lang.NoSuchFieldError: query_cache_size
    at org.neo4j.cypher.ExecutionEngine.org$neo4j$cypher$ExecutionEngine$$getQueryCacheSize(ExecutionEngine.scala:95)
    at org.neo4j.cypher.ExecutionEngine$$anon$1.<init>(ExecutionEngine.scala:91)
    at org.neo4j.cypher.ExecutionEngine.<init>(ExecutionEngine.scala:91)
    at org.neo4j.cypher.javacompat.ExecutionEngine.<init>(ExecutionEngine.java:54)
    at org.neo4j.cypher.javacompat.ExecutionEngine.<init>(ExecutionEngine.java:44)
    at org.springframework.data.neo4j.support.query.CypherQueryEngine.<init>(CypherQueryEngine.java:42)
    at org.springframework.data.neo4j.support.DelegatingGraphDatabase.createCypherQueryEngine(DelegatingGraphDatabase.java:217)
    at org.springframework.data.neo4j.support.DelegatingGraphDatabase.queryEngineFor(DelegatingGraphDatabase.java:190)
    at org.springframework.data.neo4j.support.MappingInfrastructureFactoryBean.afterPropertiesSet(MappingInfrastructureFactoryBean.java:146)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)
    ... 47 more

就我而言,应该没有问题,因为default value是100. SDN文档没有谈论它too much。有什么建议吗?

提前谢谢大家。

1 个答案:

答案 0 :(得分:4)

看起来像版本兼容性问题。对我来说,下面的组合工作正常

spring-data-neo4j : 2.1.0.RC4
spring-data-mongodb : 1.1.0.RELEASE 
neo4j-server : 1.8
static-web : 1.8

此外,我正在使用 -

Spring framework version : 3.1.2.RELEASE
Neo4j version : 1.8
mongodb version : 2.2.2
mongo-java-driver : 2.9.1
slf4j : 1.7.2