2016-11-04 50 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,這將允許您完全控制事務語義。

相關問題