繁体   English   中英

Spring 测试中的事务性不起作用

[英]Transactional in Spring test does not work

我在测试中使用 Spring 事务 (@Transactional)。 基本上,我有一个 DAO 层,其中每个方法在该方法上都有一个 @Transactional。 在测试类中,如果不指定@Transactional,就可以看到数据库中的数据(所以数据被保存了),否则在类上添加@Transactional不会持久化数据。 但是,一旦测试结束,数据就会持久化。

你知道它为什么这样做吗?

当您添加@Transactional注释时,Spring 将围绕您的测试方法和@Before@After回调启动一个新事务,当测试完成时,事务将自动回滚。

https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#testcontext-tx

你的测试类的一些代码会有所帮助,所以我可以猜测......

如何将数据保存在数据库中? 如果您使用Repository.save(E Entity)方法,则更改将不会刷新到数据库。 它们只会保存在一级缓存中。

如果要将数据刷新到数据库,则应在测试类中使用TestEntityManager并调用persistFlushFind(E entity)方法将实体真正刷新到数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM