我正在使用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());
}
}
}
的applicationContext.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>
测试输出:
运行personal.neo4j.DatabaseTest
实体数量= 2
实体一 实体二
使用图书馆:
Java 1.7
春季3.2.8.RELEASE
Neo4j 2.0.2
Spring Data Neo4j 3.0.2.RELEASE
JUnit 4.11
感谢您的帮助,
托马斯
答案 0 :(得分:3)
看看这个帖子是否有帮助: http://forum.spring.io/forum/spring-projects/data/53804-commit-transactions-running-springjunit4classrunner
看起来SpringJUnit4ClassRunner将回滚所有事务,除非另有明确说明。