关于SpringMvc中的事务@Transactional
来源:互联网 发布:历史大事年表知乎 编辑:程序博客网 时间:2024/06/02 04:44
情景:
SpringMVC Dubbo 远程调用 业务层
在业务层Facade实现类中 用Dubbo 远程调用 业务层 事务不回滚
如下:
@Override
@Transactional(rollbackFor=Exception.class)
publicbooleanreceAward(LonguserId)throwsBusinessException {
/**
* 当这个方法抛出异常 其他操作都会回滚 唯独下面领接口不会回滚 为什么呢?
*/
//操作1
issuccess=couponFacade.gradRed****(参数)
//测试1 //操作2
CpsCouponTyperecord=newCpsCouponType();
record.setId(1L);
record.setDesc("测试事务是否回滚此操作");
couponService.updateCpsCouponType(record);
//测试2 //操作3
test();
//领奖了记录一下 //操作4
CpsActiveSignAwardcpsAward=newCpsActiveSignAward();
cpsAward.setSignconfId(vo.get(0).getId());
cpsAward.setRecordId(cpsActiveVo.getId());
cpsAward.setUserId(userId);
lotteryService.insertCpsActiveSignAward(cpsAward);
//操作5
CpsActiveSignRecordins=newCpsActiveSignRecord();
ins.setLastDaydate(newDate());
ins.setUserId(userId);
ins.setDayNum(cpsActiveVo.getDayNum()+1);
ins.setId(cpsActiveVo.getId());
lotteryService.update(ins);
inti= 1/0; //这里故意抛异常
returnissuccess;
}
//这个测试 也是放着本 业务层里面
@Override
publicvoidtest() {
CpsActiveSignRecordins=newCpsActiveSignRecord();
ins.setDayNum(111);
ins.setId(1);
lotteryService.update(ins);
}
上面是我写的一些测试情况;
经过运行发现 所有的事务都回滚了 只有操作1没有回滚;
猜想:由于操作1 是通过dubbo远程调用的方法; 消息已经发出去了;操作已经执行成功了;然后当前业务层 所有的操作的事务还没有提交 所以能够回滚; 恩,应该是这样 哈哈哈哈
解决方案:
将 这个 方法 couponFacade.gradRed****(参数) 的实现 放到了 couponService 业务层中
然后在这里直接调用couponService.gradRed****(参数);这样子就可以了
0 0
- 关于SpringMvc中的事务@Transactional
- @Transactional注解在spring中的应用-事务
- 使用Spring中的 @Transactional注解控制事务
- SpringMVC+Spring3.2+Hibernate4.2 @Transactional 事务不成功原因
- springmvc + hibernate +mysql 通过@Transactional来开启事务
- SpringMVC @Transactional注解方式事务失效的解决办法
- JavaEE_ Spring__Spring中的事务 @Transactional 事务注释 (一)
- 关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签
- 关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签
- 关于Spring的事务Transactional,锁同步,并发线程
- 数据库事务中的隔离级别和锁+spring Transactional注解
- 数据库事务中的隔离级别和锁+spring Transactional注解
- @Transactional spring 配置事务
- spring 事务注解@Transactional
- spring 事务注解@Transactional
- spring 事务注解@Transactional
- grails 事务 Transactional
- spring @transactional事务
- cocos2d-x编译问题集合之error C2440: “类型转换”: 无法从“void (__thiscall ::* )(void)”转换为“
- UVA 156 - Ananagrams
- 杭电2535
- Android--五大布局
- Struts2框架的标签库
- 关于SpringMvc中的事务@Transactional
- 【混合编程】C#调用C++
- bzoj2134 单选错位 递推
- 清华1084,整数拆分
- NSURLSession 简单入门及断点下载续传实例
- 原始的爱情
- 层次聚类算法及其实现
- 主流WiFi芯片与性能简介
- Word自动编号多级标题设置