[英]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.