定义了一个service:UserService其中有个方法定义如下:@Transactional(propagation = Propagation.REQUIRES_NEW)public void saveException(User user){
userDao.save(user);
throw new RuntimeException("异常");
}如果我在Controller层直接调用这个方法,是可以进行回滚的,但如果我把这个方法再包一层,如下:public void saveInnerException() {
User user1 = new User();
user1.setName("李四");
this.saveException(user1);
}saveInnerException还是在同一个service中,并且这个方法没有加事务,这个时候,如果Controller层调用saveInnerException方法,事务会进行提交,这个很奇怪,发生了异常,应该回滚才对。我又进行了另外的测试,这次我重新定义了一个service:UserService2,里边有个非事务方法,如下:public void test(){
User user = new User();
user.setName("李四");
userService.saveException(user);
}如果Controller调用UserService2的test方法,这时事务就会回滚了。同样是多了一层调用,结果为什么不一样?
- 2 回答
- 0 关注
- 716 浏览
添加回答
举报
0/150
提交
取消