当前位置: 代码迷 >> Web前端 >> Spring 管理实务不能回滚有关问题!终于找到原因!大意了…
  详细解决方案

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

热度:300   发布时间:2012-09-01 09:33:02.0
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{
              ……
    }
    ?
  相关解决方案