首页 新闻 会员 周边 捐助

@Transactional事务没有注释,但测试还是提交成功

0
[待解决问题]

测试service实现类的时候,实现类里面并没有注释@Transactional,但是测试的事务仍提交成功(修改成功),这是为什么

我自风度翩翩的主页 我自风度翩翩 | 菜鸟二级 | 园豆:204
提问于:2019-11-05 20:32
< >
分享
所有回答(3)
0

Mysql事务的默认机制是:如果不加事务,会自动commit

草莓罐头 | 园豆:204 (菜鸟二级) | 2019-11-06 08:47

就是使用的mysql数据库,昨天着急忘记了这一点,真是抱歉!
因为有其他Service方法里面有调用2个mapper的方法,有一个方法出现问题了,报错抛出了异常,事务自动回滚,所有就没有提交成功
而其他正确的方法,因为能正常运行,也没有抛出异常,所以测试的时候即使没有配置事务也会自动提交,
昨天就是一直在纠结这个问题

支持(0) 反对(0) 我自风度翩翩 | 园豆:204 (菜鸟二级) | 2019-11-06 19:05
0

最好把你使用了什么数据库描述下,把你的代码也贴下,这样方便大家看问题~

程序员自由之路 | 园豆:244 (菜鸟二级) | 2019-11-06 09:46
0

新手上路,有什么不正确的地方还望大家指正一下!
因为还没有开通博客不能上传图片~(马上开通)~ ,所有就在这里用文字与大家分享一些mybatis@Transactional 事务注解的一些特性:
1.事务要成功提交,要保证方法为public
2.在执行的方法里面,要保证方法要正常运行,不要随便抛出异常,这样可能会导致事务回滚

  1. @Transactional 注解,不要使用在类所要实现的任何接口上
    4.@Transactional 注解的出现并没有全部开启事务行为,必须在配置文件中使用配置元素

有什么不足之处,大家可以提出来,我进行修改,大家也可以多多补充,方便以后有需要的人查阅呀!!

我自风度翩翩 | 园豆:204 (菜鸟二级) | 2019-11-06 19:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册