Spring JPA Junit 关闭自动回滚
Posted winters1992
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring JPA Junit 关闭自动回滚相关的知识,希望对你有一定的参考价值。
因为用了JPA配合Hibernate ,采用注解默认是开启了LayzLoad也就是懒加载,所以不得不在Junit的单元测试上加上@Transactional注解
这样Spring会自动为当前线程开启Session,这样在单元测试里面懒加载才不会因为访问完Repo之后,出现session not found.
但是单元测试里面如果加上了@Transactional 会自动回滚事务,需要在单元测试上面加上
@Rollback(false)
@Test @Transactional @Rollback(false) public void testTagForArticle(){ Article article = articleRepo.getOne(3); for(Tag tag:article.getTags()){ System.out.println(tag.getTagName()); } }
这样才能在数据库里面看到结果,自学踩的坑不是一般的多啊。
以上是关于Spring JPA Junit 关闭自动回滚的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Boot 应用程序的 JUnit 测试中,自动装配的 JPA 存储库没有合格的 bean
使用 spring-data-jpa 和 MockMvc 进行 spring boot junit 测试
JPA 事务回滚重试和恢复:将实体与自动递增的@Version 合并