标签:updateuser transaction .. addUser Spring User timeout new public
1、异常信息
org.springframework.transaction.TransactionTimedOutException: Transaction timed out: deadline was Tue Jul 23 18:06:32 CST 2019...
2、示例代码
@Service
public class UserServiceImpl implements UserService{
// 加载mapper
@Autowired
private UserMapper usermapper;
@Transactional(propagation=Propagation.REQUIRED,timeout=5) // 启用事务管理
public void myTransaction(User addUser, User updateuser) {
System.out.println("---- UserServiceImpl myTrasaction方法开始 ");
usermapper.add(addUser);
try {
Thread.sleep(7000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
usermapper.update(updateuser);
System.out.println("---- UserServiceImpl myTrasaction方法结束 ");
}
}
/**
* 单元测试代码
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-transaction-annotation.xml")
public class TestTransaction {
@Autowired
private UserService userService;
@Test
public void test1(){
User addUser = new User("wuyifan","吴亦凡","123456789",1,new Date(),"13688889999","西安市长安区成府路207号",1,1,new Date(),null,null);
User updateuser = new User();
updateuser.setId(81);
updateuser.setUserCode("dzq");
updateuser.setUserName("邓紫棋");
userService.myTrasaction(addUser, updateuser);
}
}
3、错误原因
事务超时
@Transactional(propagation=Propagation.REQUIRED,timeout=5) 指定事务的运行时间是5秒,而myTransaction中线程休眠时间就有7秒,所以事务的运行时间不够,因此报错。
4、解决方法
可以设置timeout的值更大,或者可以不设置,使用默认值(timeout的默认值是none)
注意:如果事务直接提交,没有报错,可能就是你的jar包版本的问题。
我的版本:
myabtis 3.4.5
myabtis-spring 1.3.0
此文希望可以帮助到大家。如有错误,请指教。
如果大家还有其他的情况或者好的解决方法,也望指教,感谢阅读。
标签:updateuser,transaction,..,addUser,Spring,User,timeout,new,public 来源: https://blog.csdn.net/wangyongx_123/article/details/97017690
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。