spring事务中插入的问题

I am 花生 2010-01-13 11:36:03
现遇到这样一个问题

在ServiceAMethodA(){中
调用ServiceBMethodB();
try{
调用ServiceCMethodC();
}catch(Exception e){
throw new RuntimeException();
}
}

其中ServiceBMethodB()中向数据库中插入一条正确记录
ServiceCMethodC()中向数据库中插入一条字段超长的错误记录

经过下断点得到ServiceCMethodC()的异常并没有在ServiceCMethodC()执行后抛出,
而是在ServiceAMethodA()执行结束后抛出,所以try,catch中捕获不到异常

我把事务去掉后,执行ServiceCMethodC()方法后就会即时抛出异常,并捕获

我想是不是ServiceAMethodA()ServiceBMethodB()ServiceCMethodC()在一个事务中,
ServiceCMethodC()的插入(merge)方法没有提交到数据库中所致

如果这样的话,我想做事务处理应该怎么去配置,我是在service层设置事务的
...全文
113 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
I am 花生 2010-01-13
  • 打赏
  • 举报
回复
我想捕捉DaoAccessException,
现在这种情况是捕捉不到DaoAccessException,
无法抛出runtimeException,也就没有事务,
所产生的结果就是ServiceBMethodB()的结果插入到了数据库
而ServiceCMethodC()的方法报错
xjpshh 2010-01-13
  • 打赏
  • 举报
回复
事务具有原子性,也就是说上面的3条语句看成是一条语句执行只要有一个出错所有的语句都不执行。这不是达到你的目的了吗?不知道楼主想做什么

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧