情况:
- spring配置文件中已经配置好事务,配置代码此处就不贴了。
- service实现类中代码:
正常情况下上述代码不会插入数据,但是我这数据被插入到数据库了。public void insert(AdsiteBO record) { try{ adsiteDAO.insert(record); adsiteDAO.update(record);//此处调用异常 } catch(Exception e){ ExceptionUtils.getFullStackTrace(e); } }
原因及解决办法:
- 这里抛出的异常被try、catch语句块捕获了,造成异常没有被抛出,所以spring管理事务失败。
- 此处我测试在catch语句块中随便抛出了个异常,结果成功了。代码如下:
spring事务回滚了。public void insert(AdsiteBO record) { try{ adsiteDAO.insert(record); adsiteDAO.update(record);//此处调用异常 } catch(Exception e){ ExceptionUtils.getFullStackTrace(e); System.out.println("抛异常了……"); throw new UnsupportedOperationException(); } } - 其实不用如此麻烦的,直接抛出异常就可以了。
public void insert(AdsiteBO record) throws Exception{ …… }
本文探讨了在Spring框架下如何正确处理事务回滚的问题。通过具体的代码示例,分析了为何某些情况下事务未能按预期回滚,并提供了确保事务完整性的解决方案。
173万+

被折叠的 条评论
为什么被折叠?



