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中事务回滚的问题

JPA 事务回滚重试和恢复:将实体与自动递增的@Version 合并

将 JUnit JPA 测试从 Spring 2.5.5 迁移到 Spring 3.0.4

Junit测试在事务后不回滚