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

如何解决Spring Data更新实体时出现的Internal Server Error问题

问题原因及解决方案

1 核心报错原因

你的代码中ServiceArbitre serviceArbitre = null;直接将业务类实例赋值为null,后续调用serviceArbitre.getArbitreById(id)时直接触发空指针异常,这是返回500错误的直接原因。
需要通过Spring依赖注入的方式获取ServiceArbitre实例,推荐使用构造函数注入的方式,避免空注入问题。

2 其他隐藏问题

  • 接口参数Arbitre newArbitre前没有添加@RequestBody注解,Spring无法自动将请求体中的JSON参数映射到该对象,会导致你获取不到前端传入的更新字段值。
  • 没有对根据ID查询到的arbitre对象做空校验,当传入的ID对应数据不存在时,调用set方法会再次触发空指针异常。

修复后的代码示例

@RestController
// 类上的@RequestMapping前缀可根据自身项目调整
public class ArbitreController {
    // 构造函数注入Service实例
    private final ServiceArbitre serviceArbitre;
    
    public ArbitreController(ServiceArbitre serviceArbitre) {
        this.serviceArbitre = serviceArbitre;
    }

    @PostMapping("updateabitre/{id}")
    public Arbitre updateArbitre(@PathVariable Long id, @RequestBody Arbitre newArbitre){
        // 查询后新增空判断
        Arbitre arbitre = serviceArbitre.getArbitreById(id);
        if (arbitre == null) {
            // 此处可根据业务需求替换为自定义异常抛出或统一错误返回
            throw new RuntimeException("对应ID的仲裁员数据不存在");
        }
        arbitre.setNomArbitre(newArbitre.getNomArbitre());
        arbitre.setNationnalite(newArbitre.getNationnalite());
        serviceArbitre.updateArbitre(arbitre);
        return arbitre;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:15:06