@Transactional注解rollbackFor无法回滚的问题Mark

    最近用SpringBoot+JPA学习数据库事务管理,在ServiceImplement的实现方法里配置好了rollbackFor,

@Transactional(rollbackFor = {IllegalArgumentException.class})
    @Override
    public TestPerson saveTestPersonWithRollBack(TestPerson testPerson) {
        TestPerson person = testRepository.save(testPerson);
        if (testPerson.getName().equals("tester")) {
            throw new IllegalArgumentException("已经存在同名的人啦,回滚一哈...");
        }
        return person;
    }

但是测试时候一直无法回滚事务,百思不得其解之后只能网上求助,最后发现是使用JPA自动生成的表(用的是MySQL)的存储引擎是MyISAM(MySQL存储引擎链接:https://my.oschina.net/junn/blog/183341),这个是不支持事务的。

解决方法:修改表的存储引擎为InnoDB就可以了(alter table test_person engine=innoDb;)。

提供思路的帖子,Mark一下:

@Transactional注解不回滚不起作用无效,转载自:http://www.voidcn.com/article/p-bozwatyd-st.html

关闭mysql自动提交------关于mysql自动提交引发的惨剧,转载自http://blog.csdn.net/sd4015700/article/details/16842931


 
  
 
 

你可能感兴趣的:(@Transactional注解rollbackFor无法回滚的问题Mark)