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

Spring Boot REST API问题:H2数据库数据插入失败与自定义异常未触发

简易REST API项目问题排查与解决

问题1:data.sql仅创建表但未插入数据

排查方向:

  • 检查Spring Boot配置项spring.sql.init.mode,需设置为always或embedded(嵌入式数据库场景),若为never会跳过数据插入步骤
  • 确认data.sql存放路径为src/main/resources,Spring Boot默认仅加载该目录下的初始化脚本
  • 查看项目日志中Spring SqlScript相关输出,确认脚本是否被执行、是否存在执行报错
  • 核对脚本SQL语法,确保语句结尾有分号,且与当前H2数据库版本兼容(虽然手动执行正常,但自动执行时的上下文可能存在差异)

问题2:DogNotFoundException未触发,返回默认Whitelabel错误页

排查方向:

  • 确认DogNotFoundException类是否添加了@ResponseStatus(HttpStatus.NOT_FOUND)注解,让Spring识别该异常对应的HTTP状态码
  • 检查业务逻辑(如Service层的findById方法),确保当查询不到对应ID的数据时,主动抛出该异常,示例:
    public Dog findById(Long id) {
        return dogRepository.findById(id)
            .orElseThrow(() -> new DogNotFoundException("Dog not found with id: " + id));
    }
    
  • 若使用全局异常处理器(@ControllerAdvice),需确保该异常被正确捕获并返回自定义响应,示例:
    @ControllerAdvice
    public class GlobalExceptionHandler {
        @ExceptionHandler(DogNotFoundException.class)
        @ResponseBody
        public ResponseEntity<String> handleDogNotFound(DogNotFoundException ex) {
            return new ResponseEntity<>(ex.getMessage(), HttpStatus.NOT_FOUND);
        }
    }
    
  • 排查是否存在优先级更高的异常处理器,覆盖了DogNotFoundException的处理逻辑

内容的提问来源于stack exchange,提问作者Sakib X Hossain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:32:08