事务

拟墨画扇 提交于 2020-01-07 12:40:30

事务不生效的原因:

@Transactional

1:数据库引擎是否支持

InnoDB支持事务,MyIsam不支持。查看表是什么引擎
1 show create table pms_product;

2:没有被 Spring 管理

1 // @Service
2 public class OrderServiceImpl implements OrderService {
3 
4     @Transactional
5     public void updateOrder(Order order) {
6         // update order
7     }
8     
9 }

如果此时把 @Service 注解注释掉,这个类就不会被加载成一个 Bean,那这个类就不会被 Spring 管理了,事务自然就失效了。

3:方法不是 public 的

4:异常被吃了

 1 @Override
 2     @Transactional
 3     public void testTransaction() {
 4         log.info("测试事务。修改id=1的值");
 5         PmsProduct pmsProduct = baseMapper.selectById(1L);
 6         pmsProduct.setProCreateTime(LocalDateTime.now());
 7         baseMapper.updateById(pmsProduct);
 8         try {
 9             int j = 1/0;
10         }catch (Exception e){
11             e.printStackTrace();
12         }
13     }

把异常吃掉,又不抛出来。事务无法回滚。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!