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());
        }
    }

这样才能在数据库里面看到结果,自学踩的坑不是一般的多啊。

时间: 2024-11-05 06:25:48

Spring JPA Junit 关闭自动回滚的相关文章

SQL Server事务执行一半出错是否自动回滚整个事务 【转】

http://www.2cto.com/database/201308/234728.html SQL Server事务执行一半出错是否自动回滚整个事务 大家都知道SQL Server事务是单个的工作单元.如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分.如果事务遇到错误且必须取消或回滚,则所有数据修改均被清除. 所以是不是说事务出错一定会回滚整个事物呢? 先看几个个例子: --createtable create table testrollback(idi

文本内容自动回滚 【js读书笔记】

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>文本内容自动回滚</title> 6 </head> 7 8 <body> 9 <h2>文本框中的文字自动回滚效果</h2> 10 <div id="rollContent" data-rwidth=&q

DDL, DML不是所有SQL都是可以自动回滚的

因为DDL没有事务性,所以DDL不能回滚. 要实现自动回滚.(begin,commit,rollback),则SQL语句中只能包括DML. 这样,自动化发布就会受限规范格式. 故而,一刀切的办法是,假定所有SQL不支持事务,自已定义好ROLLBACK的SQL脚本,在出错时能用代码回滚, 而不是依赖于数据库本身的功能. ======================== DDL和DML DDL (Data Definition Language 数据定义语言) create table 创建表 al

用Spring TestContext 做带事务回滚的JUnit测试

JUnit单元测试框架很常用 但可能会破坏数据库现场 以及大量的硬编码出现(applicationContext.getBean("")); 今天哥们给新手介绍一下 Spring Test这个Spring自带的jar包中的一些注解 实现单元测试+事务回滚+注解依赖注入 网上的相关教程不多 我的意思是有用的不多 基本都是类似api文档那种 给你罗列一大堆注解和类 告诉你他们的作用 你看完了也不知道该从哪里入手 我自己琢磨了几天(哥们天赋不是很高) 写了一个测试类 测试成功 给大家分享一下

spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

1 //假设这是一个service类的片段 2 3 try{ 4 //出现异常 5 } catch (Exception e) { 6 e.printStackTrace(); 7 //设置手动回滚 8 TransactionAspectSupport.currentTransactionStatus() 9 .setRollbackOnly(); 10 } 11 //此时return语句能够执行 12 return xxx; 如上: 当我们需要在事务控制的service层类中使用try cat

springboot单元测试自动回滚:@Transactional

2019-04-21 12:23:14.509 INFO 9384 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2019-04-21 12:23:14.818 INFO 9384 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.2019-04-21 12:23:14.829 INF

spring 声明式事务管理在真实的Service和单元测试时的回滚情况,需要注意的问题,jpa为例子

如何测试事务,测试事务回滚情况: 我做了大量的不同的测试: 场景1: Service层中使用注解@Transactional,注解@PersistenceContext     private EntityManager  emt; 写了两个方法 public void insertfail() //插入失败要回滚 { for(int i=0;i<20;i++) { User users=new User(); users.setEmail("[email protected]"

JPA中事务回滚的问题

我的项目使用的是Spring Boot,Spring Data JPA 其中Spring已经封装好了事务,在注解@Transactional中,自动执行事务,出异常自动回滚,但在使用的时候会遇到一些问题: 在多个方法中使用@Transactional,其中一个方法运行时候报错,但是数据却插进去了,但是其他两个方法没有:有时候抛了异常,却不会回滚:方法嵌套的时候执行报错…… 查阅了一些资料后,得知是没有正确使用Spring的@Transactional. 下面借用我查到的别人的博客中的例子来说明S

Spring-mvc junit单元测试中 如何回滚?

@RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration(value = "src/main/webapp") @ContextHierarchy({ @ContextConfiguration(name = "parent", locations = "classpath:./spring/applicationContext.xml") }) public class Messa