@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


 

                
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值