①BaseServices 中有两个方法 updateName(),updateFlag()
DaoServices 中有个方法updateFlag()
②UserServices 中有个方法,methodUserServices()[注解:Propagation.REQUIRES_NEW],
调用如下
[code="java"]
methodUserServices(){
try{
updateName();
}catch(){
updateFlag();
}
}
[/code]
两个方法操作的是同表、同记录,会导致一个问题,如果updateName出现异常.程序运行到updateFlag()这里没有重新开启事务,会导致一起回滚掉,
如果把updateFlag单独提取出来也就是放到DaoServices里面,注解同样为Propagation.REQUIRES_NEW,会出现 Lock wait timeout exceeded; try restarting transaction; 异常
想要达到的效果即使updateName出现异常,updateFlag这个方法要提交事务