@Transactional public void save(User user) throws Exception{ try { for (int i = 0;i < 5;i++){ apiService.createUser();//在权限系统创建用户以http形式 user.setUserName(“”); user.setPassWord(null); userDao.save(user); System.out.print("继续执行"+i); } } catch (Exception e) { System.out.print("service进来了"); } 公司 架构是spring+spring data jpa+springmvc 在执行save方法时 问题一:理论上在循环第一次已经异常不应该继续往下执行,但是会继续循环五次 问题二:在service中不会进入catch,而在controller中可以,如果我在循环中throw new RuntimeException()异常service进入catch,如果我删除事务注解,没问题进入catch. 感觉很奇怪,求指点
忘记了上来回复了,其实是spring data jpa 在执行save操作时是把数据缓存起来,没有提交到数据库需要flush掉就可以捕获异常了
异常信息是啥?事务用了代理执行,可能代理过程可能发生了错误。这样service里就捕获不了错误,上抛给controller了