2016-11-04 65 views
0

我有Spring Data Neo4j很好的连接和工作。我已经建立了几个单元测试,并在测试课程上使用@Transactional注释。测试运行,但他们编写的数据总是回滚。在日志中我可以看到:防止回滚 - Spring Data,JUnit和Neo4J

] o.n.o.drivers.http.request.HttpRequest ... 
request: {"statements":[{"statement":"UNWIND {rows} as row MATCH ... 

不过,我想这剿,我已经使用(在科特林)尝试:

@Test 
@Commit 
fun myDbTest() {...} 

@Test 
@Rollback(false) 
fun myDbTest() {...} 

但注释忽略?

我似乎有相反的问题,最需要回滚,但它不工作:)在我的情况下,回滚完美,我希望关闭它。

+0

只需从测试类中移除事务并且数据应该是持久的。 –

+0

我也尝试过,但在测试结束时仍会执行展开语句。 – Vince

+0

您使用的是什么版本的SDN?如果它在4.2.x之前,它可能会或可能不会遵守这里的文档:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-tx-实现的事务。如果你真的需要这种行为,它可以在4.2.x上运行。或者,你可以连接一个'TransactionTemplate'而不是'@Transactional',这将允许你完全控制事务语义(它只是更多的代码)。 – digx1

回答

1

根据official documentation,针对弹簧数据Neo4j(SDN)在版本4.0.x4.1.x之间编写的弹簧集成测试不起作用。这是因为事务管理器实现没有集成到预期的Spring Transaction生态系统中。从4.2.x开始,现在已经修复,并且按照文档工作。

在撰写本文时,4.2.0.M1是最新版本,但包含几个重要的错误。 4.2.0.RC1将于2016年11月28日到期,现在4.2.0.BUILD-SNAPSHOT实际上相当稳定(并且已经有一段时间了)。

如果您必须在4.2.x之前的SDN中使用此行为,则可能会连接TransactionTemplate而不是@Transactional,这将允许您完全控制事务语义。

相关问题