首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate验证@Enumerated(EnumType.STRING)字段

Hibernate验证@Enumerated(EnumType.STRING)字段
EN

Stack Overflow用户
提问于 2019-06-13 04:11:37
回答 1查看 79关注 0票数 0

我有一个POJO,其中一个字段使用hibernate映射:

代码语言:javascript
复制
@Enumerated(EnumType.STRING)
@Column(name = "status")
private UserStatus status;

枚举只有两个可能的值:激活和停用

在我的控制器中,我有一个在数据库中保存实体的简单方法:

代码语言:javascript
复制
@PostMapping("/save")
private UserDto saveUser(@RequestBody User user){
    return userService.save(user);
}

如果我尝试使用不存在的UserStatus保存用户,则会收到以下错误消息:

代码语言:javascript
复制
"message": "JSON parse error: Cannot deserialize value of type `com.example.demo.utils.UserStatus` from String \"Deactivated1\": value not one of declared Enum instance names: [Deactivated, Activated]; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `com.example.demo.utils.UserStatus` from String \"Deactivated1\": value not one of declared Enum instance names: [Deactivated, Activated]\n at [Source: (PushbackInputStream); line: 3, column: 12] (through reference chain: com.example.demo.entity.User[\"status\"])",

如何处理不存在的值的序列化?在这种情况下,我想抛出一个自定义异常。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-06-13 04:29:31

您可以在您的控制器中添加一个ExceptionHandler,如下所示

代码语言:javascript
复制
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ExceptionHandler(HttpMessageNotReadableException.class)
public ResponseEntity handleException() {
   // create custom error response
}`

或者,如果您希望在一般情况下处理这种情况,那么对于所有控制器,您都可以使用ControllerAdvice。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56569710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档