spring中@transactional的疑惑
来源:互联网 发布:海岛奇兵所有升级数据 编辑:程序博客网 时间:2024/05/01 09:22
在项目中遇到了奇怪的问题,如下
原因:酒肆service里有两个函数
ClassPlayerRestaurantService{
//刷新酒肆
@transctional
public void refreshPlayerRestaurant(int id){
PlayerRestaurant playerRestaurant = playerRestaurantDao.read(id);
//增加酒肆次数
addPlayerRestaurant(id,count,type);
//更新酒肆时间
setPlayerRestaurantTime;
}
@transctional
addPlayerRestaurant(intid,int count,int type){
}
}
refreshPlayerRestaurant在其他类中调用时,酒肆次数增加,时间刷新,表现正常。
在类内调用时只刷新了时间,而次数未增加。
原因分析
这两个函数是被spring托管的
上个版本是在PlayerRestaurantService之外调用的refreshPlayerRestaurant,所以refreshPlayerRestaurant, addPlayerRestaurant两个嵌套事务被当成一个大的事务一起提交到数据库。因此是正确的。
这个版本加了酒肆次数提示,将refreshPlayerRestaurant挪到了PlayerRestaurantService里面另外一个函数里。@transctional
在spring托管的类内部失效了,这样的话在调用refreshPlayerRestaurant时就只会更新时间,不会增加次数。
第一次bug修改的话是把更新酒肆时间部分挪到了addPlayerRestaurant(intid,int count,int type)里面,但是没有考虑到这个函数在升级奖励时也调用了,这样升级的时候就会把时间更新到后面去了。
- spring中@transactional的疑惑
- Spring事务管理中@Transactional的参数配置
- Spring事务管理中@Transactional的propagation参数
- Spring事务管理中@Transactional的propagation参数
- Spring中@Transactional注解的深度分析
- Spring事务管理中@Transactional的参数配置
- Spring事务管理中@Transactional的propagation参数
- Spring事务管理中@Transactional的propagation参数
- Spring中Transactional配置
- Spring中Transactional配置
- Spring中Transactional配置
- Spring中 Transactional配置
- Spring中Transactional配置
- Spring中@Transactional用法
- Spring中@transactional原理
- spring的@Transactional()用
- spring的@Transactional
- Spring 的 @Transactional事务
- 利用Putty建立SSH通道实现代理
- etmvc中生成JsonView的时间格式问题处理
- 如何将u盘里面的两个分区变成为一个分区
- linux下编译C/C++静态链接libpthread及libc的方法
- 带有动画效果的Gallery控件
- spring中@transactional的疑惑
- 改变网络安全现状的八大趋势
- git乱码解决方案
- sprintf用法大全
- linux --工作队列
- 信息论-matlab求信道容量(迭代法)
- linux下静态编译ffmpeg及opencv的C++工程
- flex+BlazeDS关于军标的实现思路和算法
- JSP自定义标签开发入门