设置Spring Data Neo4j示例

时间:2014-06-18 04:56:31

标签: java spring neo4j spring-data-neo4j

我是Neo4j和Java的新手,我正在尝试使用Spring Data Neo4J示例(http://projects.spring.io/spring-data-neo4j/)。

显然,大多数示例不再起作用的原因是因为最新版本的Spring Data Neo4j(SDN 3.0)发生了一些重大变化。

还有另一篇文章(Errors of the Cineasts examples of Spring data neo4j)提到在neo4j:config和neo4j:repositories元素中添加“base-package”属性。我尝试这样做并得到一个额外的错误:“元素”neo4j:config“的前缀”neo4j“没有绑定。”

2 个答案:

答案 0 :(得分:1)

经过数天的研究和大量的试验和错误,我能够让cineasts示例项目工作。希望这会为你节省很多时间。

对于两个“错误:cvc-complex-type.4:属性'bases-package'必须出现在元素'neo4j:config'”错误上,添加base-package属性(base-package =“org.neo4j .cineasts.domain“)到applicationContext.xml中的neo4j:config标签(在src / main / webapp / WEB-INF文件夹中)和movies-test-context.xml(在test / resources文件夹中)。

tx.close()未定义的其他错误可以通过将其更改为tx.finish()来修复。

要运行项目,请使用jetty运行Maven构建:以目标身份运行。确保你使用的是jdk而不仅仅是jre。我用jre运行它并得到一个错误并且必须使用jetty运行Maven构建:在重新部署之前停止杀死服务器。

答案 1 :(得分:0)

欢迎来到同一条船,也刚刚开始使用Neo4j和SDN。您收到的错误是由于没有声明xmlns:neo4j,但您可能还有其他一些问题,包括下面的整个文件。我的存储库,带注释的bean等都在com.purr.justtravel.neo4j的子包中。

我本身并没有使用Spring数据示例,而是基于这些示例做了我自己的事情,但以下配置对我来说很好。

您可以在内存数据库和进程内(但使用磁盘存储)版本之间切换。内存数据库只是使用新的TestGraphDatabaseFactory()。newImpermanentDatabase()创建,我用静态工厂方法包装。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:neo4j="http://www.springframework.org/schema/data/neo4j"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd">

    <context:annotation-config />
    <tx:annotation-driven mode="proxy" />

    <!-- SAME PROCESS DATABASE -->
    <neo4j:config storeDirectory="neo4jdb/store/graph.db" base-package="com.purr.justtravel.neo4j"/>
     <!-- IN MEMORY DATABASE -->
<!--     <neo4j:config graphDatabaseService="graphDatabaseService" base-package="com.purr.justtravel.neo4j" /> -->
<!--     <bean id="graphDatabaseService" class="com.purr.justtravel.server.AbstractInMemoryNeo4jTest" factory-method="createNeo4jDatabase" /> -->

    <neo4j:repositories base-package="com.purr.justtravel.neo4j" />

</beans>