最近有个业务是for循环里面,循环一次业务提交一次,过程中发现事务不能提交,总结一下这个问题
第一点:
我用的是通用mapper,用到他的updateByPrimaryKeySelective方法,这个方法必须设置主键,不然他的where后面会带上所有字段造成sql错误
第二点:
用spring来做声明式事务的话,方法直接调用内部方法是不会走到代理类的,也就是不会走到切面,所以@Transactional可能会失效
所有我把更新业务单独提出来写在另外一个类里面就搞定了


解决循环内事务提交失败
        
本文探讨了在for循环中每次迭代都尝试提交事务时遇到的问题。总结了使用通用mapper的updateByPrimaryKeySelective方法时,必须设置主键以避免SQL错误。同时,分析了在Spring声明式事务中,直接方法调用可能不触发代理,导致@Transactional注解失效的解决方案。
          最近有个业务是for循环里面,循环一次业务提交一次,过程中发现事务不能提交,总结一下这个问题
第一点:
我用的是通用mapper,用到他的updateByPrimaryKeySelective方法,这个方法必须设置主键,不然他的where后面会带上所有字段造成sql错误
第二点:
用spring来做声明式事务的话,方法直接调用内部方法是不会走到代理类的,也就是不会走到切面,所以@Transactional可能会失效
所有我把更新业务单独提出来写在另外一个类里面就搞定了


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