Spring Data Neo4j从2.3.3迁移到3.0.0 RC1的问题

时间:2014-02-14 15:57:13

标签: neo4j spring-data-neo4j

我正在尝试将SDN项目从当前的稳定版本(2.3.3)迁移到支持Neo4j 2.0的3.0.0 RC1版本。 该项目是一个部署在Glassfish 3.1.2.2服务器上的WAR,它使用通过 @Autowired Neo4jOperations对象和GraphRepository<T>对象访问Neo4j的EJB。 使用SpringBeanAutowiringInterceptor拦截器注释支持自动布线。 SDN配置由spring xml配置文件中的以下行给出:

<context:annotation-config/>
<context:spring-configured/>
<bean id="graphDatabaseService" class="org.neo4j.kernel.EmbeddedGraphDatabase" destroy-method="shutdown">
    <constructor-arg index="0" value="my.db"/>
</bean>
<neo4j:repositories base-package="com.my.neo4j.repository"/>
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>
<neo4j:config graphDatabaseService="graphDatabaseService"/>

使用2.3.3 SDN版本时一切正常,但遗憾的是使用3.0.0 RC1在部署时出现以下错误:

  

javax.enterprise.inject.UnsatisfiedResolutionException:无法执行   解决一个bean   'org.springframework.data.neo4j.support.mapping.Neo4jMappingContext'   使用限定符[@javax.enterprise.inject.Any(),   @ javax.enterprise.inject.Default()]。           在org.springframework.data.neo4j.repository.cdi.Neo4jCdiRepositoryExtension.createRepositoryBean(Neo4jCdiRepositoryExtension.java:107)           在org.springframework.data.neo4j.repository.cdi.Neo4jCdiRepositoryExtension.afterBeanDiscovery(Neo4jCdiRepositoryExtension.java:82)   ...

我真的不知道我的项目有什么问题,我很感激能帮助我解决这个问题的任何人。

更新:与3.0.0.RELEASE相同的问题。

1 个答案:

答案 0 :(得分:0)

EmbeddedGraphDatabase不再有构造函数。

您必须使用我添加的GraphDatabaseServiceFactoryBean

<bean id="graphDatabaseService" class="org.springframework.data.neo4j.support.GraphDatabaseServiceFactoryBean"
        destroy-method="shutdown" scope="singleton">
    <constructor-arg value="target/config-test"/>
    <constructor-arg>
        <map>
            <entry key="allow_store_upgrade" value="true"/>
        </map>
    </constructor-arg>
</bean>