Spring 管理实务不能回滚问题!终于找到原因!大意了……

情况:

  1. spring配置文件中已经配置好事务,配置代码此处就不贴了。
  2. service实现类中代码:
    public void insert(AdsiteBO record) {
            try{
            	adsiteDAO.insert(record);
                    adsiteDAO.update(record);//此处调用异常
            }
            catch(Exception e){
                ExceptionUtils.getFullStackTrace(e);
            }
        }
    正常情况下上述代码不会插入数据,但是我这数据被插入到数据库了。

原因及解决办法:

  1. 这里抛出的异常被try、catch语句块捕获了,造成异常没有被抛出,所以spring管理事务失败。
  2. 此处我测试在catch语句块中随便抛出了个异常,结果成功了。代码如下:
    public void insert(AdsiteBO record) {
            try{
            	adsiteDAO.insert(record);
            	adsiteDAO.update(record);//此处调用异常
            }
            catch(Exception e){
                ExceptionUtils.getFullStackTrace(e);
                System.out.println("抛异常了……");
                throw new UnsupportedOperationException();
            }
        }
     spring事务回滚了。
  3. 其实不用如此麻烦的,直接抛出异常就可以了。
    public void insert(AdsiteBO record) throws Exception{
              ……
    }
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值