【问题标题】:Controller still calls method after exception is thrown抛出异常后控制器仍然调用方法
【发布时间】:2022-01-27 08:47:06
【问题描述】:

如果我输入的 JSON 生成异常,我希望我的控制器不要执行在该控制器中调用的方法。

这是我的控制器

@PostMapping
    public BankUser save(@RequestBody BankUser bankUser) throws SQLIntegrityConstraintViolationException {
        accountService.save(bankUser);
        return userService.save(bankUser);
    }

我想在添加新用户时自动创建一个帐户,不幸的是,如果我尝试传递一个重复的用户,则不会创建该用户,但仍会在 save 方法的帮助下创建该用户的帐户在 accountService 层中。

我的问题是我是否可以以某种方式处理控制器抛出的异常,只有当控制器没有抛出任何错误时,我才会调用 accountRepository 的 save() 方法。

【问题讨论】:

    标签: mysql jpa exception spring-data-jpa


    【解决方案1】:

    添加@Transactional 使其工作

    @PostMapping
    @Transactional
    public BankUser save(@RequestBody BankUser bankUser) throws SQLIntegrityConstraintViolationException{
        accountService.save(bankUser);
        return userService.save(bankUser);
    }
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    相关资源
    最近更新 更多