@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.
感觉很奇怪,求指点
Quelles sont les informations sur les exceptions ? La transaction a été exécutée à l'aide d'un agent et une erreur peut s'être produite pendant le processus de l'agent. De cette façon, les erreurs ne peuvent pas être capturées dans le service et sont renvoyées au contrôleur
J'ai oublié de répondre. En fait, spring data jpa met en cache les données lors de l'exécution de l'opération de sauvegarde, si elles ne sont pas soumises à la base de données, elles doivent être vidées pour intercepter l'exception
.