gpt4 book ai didi

java - 处理Spring Hibernate SQL错误的推荐方法

转载 作者:行者123 更新时间:2023-11-30 06:08:09 25 4
gpt4 key购买 nike

我在 Spring 的 Controller 中有一个后端点,看起来像这样

@Autowired
private BookRepository bookRepository;

@PostMapping(path="/book")
public @ResponseBody BookEntity addBook(@RequestBody BookEntity bookEntity)
{
return this.bookRepository.save(bookEntity);
}

现在,如果提交了无效的 json 数据并且调用了保存函数,我的控制台将输出一个错误,例如 h.engine.jdbc.spi.SqlExceptionHelper :键“isbn”的重复条目“1091209”

用户将看到一个非常不友好的 API 响应。

这带来的另一个问题似乎是跳过了 auto_incremented id,例如我转到 1、2、4,跳过 3,因为第三个 api 调用是失败的 api 调用。

处理上述场景的最佳实践是什么?

最佳答案

您可以定义自己的错误处理程序,它扩展了 ResponseEntityExceptionHandler 并捕获数据库特定的异常。这是一个代码...

@RestControllerAdvice
@RequestMapping(produces = "application/json")
public class DefaultExceptionHandler extends ResponseEntityExceptionHandler {

// This method handles constraint violation exception raised by DB.
// Similarly other type exceptions like custom exception and HTTP status related
//exception can be handled here.
@ExceptionHandler(ConstraintViolationException.class)
@ResponseStatus(value = HttpStatus.CONFLICT)
public Map<String, String> handleConstraintViolationException(ConstraintViolationException ex) {
// write your own logic to return user friendly response
}

// Below method is to handle _SqlExceptionHelper_ exception
@ExceptionHandler(SqlExceptionHelper.class)
@ResponseStatus(value = HttpStatus.CONFLICT)
public Map<String, String> handleConstraintViolationException(SqlExceptionHelper ex) {
// write your own logic to return user friendly response
}



}

关于java - 处理Spring Hibernate SQL错误的推荐方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50846360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com