当前位置: 首页 > 知识库问答 >
问题:

Neo4j数据库未使用Spring数据Neo4j持久化

洪俊拔
2023-03-14

我开始使用Neo4j和Spring Data Neo4j的项目。我希望我的程序使用已经包含我的数据的本地数据库(而不是每次启动时加载数据),因为我有很多数据需要加载到数据库中。为了实现这个目标,我尝试设置一个用我的数据填充数据库的测试用例。但是,在我的测试完成后,数据库中的数据似乎不会持久:我使用neo4j控制台/shell查看数据库,发现它是空的。

我已经构建了一个小的例子项目,也不工作。任何对我做错了什么的洞察都将不胜感激。

节点实体类:

@NodeEntity
public class Entity {
    @GraphId private Long graphId;
    private String name;
    public Entity() { }
    public Entity(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}

存储库类:

public interface EntityRepository extends GraphRepository<Entity> { }

我的测试类:

@ContextConfiguration(locations = "classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
public class DatabaseTest {
    @Autowired Neo4jTemplate template;
    @Autowired EntityRepository entityRepository;
    @Test
    public void testCreatingEntities() {
        Entity entity1 = new Entity("one");
        Entity entity2 = new Entity("two");
        template.save(entity1);
        template.save(entity2);
        Iterator<Entity> entityIterator = entityRepository.findAll().iterator();
        List<Entity> entityList = IteratorUtils.toList(entityIterator);
        System.out.println("Number of entities = " + entityList.size());
        for(Entity entity : entityList) {
            System.out.println("Entity " + entity.getName());
        }
    }
}

应用Context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:neo4j="http://www.springframework.org/schema/data/neo4j"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.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
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">
    <context:spring-configured/>
    <context:annotation-config/>
    <context:component-scan base-package="personal.neo4j">
        <context:exclude-filter type="annotation"
            expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    <neo4j:config storeDirectory="data/test.db"
        base-package="personal.neo4j"/>
    <neo4j:repositories base-package="personal.neo4j"/>
    <tx:annotation-driven/>
</beans>

测试输出:

个人跑步。neo4j。DatabaseTest
实体数=2
实体一
实体二

使用库:
Java1.7
Spring3.2。8.释放Neo4j 2.0。2
Spring数据Neo4j 3.0。2.发布JUnit 4.11

谢谢你的帮助,

托马斯

共有1个答案

左翰海
2023-03-14

查看此线程是否有帮助:http://forum.spring.io/forum/spring-projects/data/53804-commit-transactions-running-springjunit4classrunner

看起来SpringJUnit4ClassRunner将回滚所有事务,除非另有明确说明。

 类似资料:
  • 我在windows机器上运行的ubuntu命令行上安装了community 4.1.1 neo4j服务。我已经稳定地使用neo4j一两个月了,就在最近它阻止了我访问neo4j数据库,它会在neo4j浏览器中这样说: 如果我运行。/neo4j-community-4.1.1/bin/cypher-shell-a192.168.0.19,它表示:

  • Neo4j 2.0。0已发布。所以我更新了neo4j版本2.0。0.M6到2.0。0.0发布。并尝试在我的网站中更新模型,但出现异常。 组织。springframework。刀。DataIntegrityViolationException:唯一属性类java。lang.String rankStatId rel:false idx:true被设置为重复值3073631_99 MY SDN版本是2

  • 包org.springframework.data.neo4j.annotation中的注释@Query提供了某些计数属性,如CountQuery、CountQueryName。 有人能解释一下这些的用法吗?更具体地说,我写了一个查询来获取关于一个主题的帖子。查询结果将被分页。下面的查询工作正常,并给我的结果。 现在我还需要结果的总数,我是否必须为此编写另一个查询,或者是否有一种方法可以容纳计数查

  • 在SDN 6中,@Deapth注释被删除,在最新的6.0中也是如此。3、增加了对双向关系的支持。早些时候,它在保持相同节点实体之间的双向关系的同时提供StackOverflow。例如A-follows-

  • 希望我的团队在这里做一些愚蠢的事情,但是,使用SDN 3.3对抗Neo4j 2.1.6,当我试图获取一个特定的实体时,我会得到一个持久性实体转换异常。 数据模型是这样的: 有一个基本节点实体模型,称之为a。它在SDN中是抽象的(它实际上是从其他几个类派生而来的,但根是@NodeEntity) 我正在执行一个Cypher查询,它有效地查找标签来自A(应该包括B和C)的节点。Java代码看起来有点像这