You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React调用SpringBoot API执行MySQL无参存储过程updatebalance失败排查

问题排查与修复方案

1. React调用未执行函数(最直接原因)

你的React调用代码里,await CheckbookService.updateBalance 只是引用了函数对象,没有执行函数,导致根本没发送POST请求到后端。

修正后的React调用代码:

await CheckbookService.updateBalance(); // 加上括号,执行函数

2. Spring Boot存储过程调用的注解补充

JPA调用修改类存储过程时,需要添加@Modifying和@Transactional注解,确保事务生效并识别为数据修改操作:

修改CheckbookRepository代码:

@Repository
public interface CheckbookRepository extends JpaRepository<Checkbook, Long> { 
    List<Checkbook> findAll(); 

    @Modifying
    @Transactional
    @Procedure(procedureName = "updatebalance")
    void updateBalance(); 
}

3. 控制器返回值优化

原控制器方法返回void,axios可能因无响应内容触发异常。建议返回标准响应实体:

修改控制器代码:

@PostMapping("/updatebalance")
@Transactional
public ResponseEntity<Void> updateBalance() {
    checkbookRepository.updateBalance();
    return ResponseEntity.ok().build();
}

4. 数据库权限验证

检查Spring Boot配置的数据库连接用户(若不是root@localhost)是否有执行updatebalance存储过程的权限,执行以下SQL授权:

GRANT EXECUTE ON PROCEDURE updatebalance TO '你的数据库用户'@'你的连接地址';
FLUSH PRIVILEGES;

内容的提问来源于stack exchange,提问作者HighwayRob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:32:32