REST API 在Spring Boot应用程序上出现了对h2数据库的问题

REST API 在Spring Boot应用程序上出现了对h2数据库的问题

问题描述

我一直在致力于创建一个简单的REST API项目。该项目有两个问题,如下:

  1. data.sql:我编写的SQL查询在其他项目上运行正常。但是在这个项目上,它能够创建表,但是无法将数据插入到表中。当我进入H2控制台并运行该查询时,它可以正常工作。如我所说,如果我创建一个新项目并运行该查询,表会被创建并且数据会被成功插入,没有任何问题。

  2. DogNotFoundException.java:这个类用于处理错误。如果请求的id不存在,则适当处理错误。但是当我运行应用程序并输入错误的id时,错误消息没有显示出来。如果没有手动处理错误,默认情况下会显示Whitelabel错误页面,这就是当我输入错误的id时发生的情况。

项目的链接

解决方案

第一个问题 简要总结如下:

  • 你需要将创建(在schema.sql中)和插入(在data.sql中)脚本分开。
  • 在application.properties中添加以下属性,确保schema.sql被识别并执行创建脚本:spring.jpa.hibernate.ddl-auto=none

对于 第二个问题

@ResponseStatus不能替代@ExceptionHandler。基本上,如果你只是简单地传递HTTP状态码(在这种情况下是404),则使用前者。如果您需要发送动态消息,则可以使用以下实现:

@ExceptionHandler(value= DogNotFoundException.class)
public ResponseEntity<String> returnNotFoundException(DogNotFoundException ex){
    return new ResponseEntity<>(ex.getMessage(), HttpStatus.NOT_FOUND);
}

在服务类上返回您希望的DogNotFoundException消息。

optionalBreed.orElseThrow(() -> new DogNotFoundException("Breed not found"));

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程