情况:
- spring配置文件中已经配置好事务,配置代码此处就不贴了。
- service实现类中代码:
public void insert(AdsiteBO record) { try{ adsiteDAO.insert(record); adsiteDAO.update(record);//此处调用异常 } catch(Exception e){ ExceptionUtils.getFullStackTrace(e); } }
正常情况下上述代码不会插入数据,但是我这数据被插入到数据库了。
原因及解决办法:
- 这里抛出的异常被try、catch语句块捕获了,造成异常没有被抛出,所以spring管理事务失败。
- 此处我测试在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事务回滚了。 - 其实不用如此麻烦的,直接抛出异常就可以了。
public void insert(AdsiteBO record) throws Exception{ …… }
?