[英]javax.validation.ValidationException: HV000028: Unexpected exception during isValid in Test
[英]hibernate validator throws exception ValidationException: HV000028 for @Past annotation
我正在 Spring Boot 项目中使用休眠验证器验证实体。 我得到了 Date 验证器 @Past 的一个例外。 我遇到了javax.validation.ValidationException: HV000028: Unexpected exception during isValid call
这是我在 gradle.build 文件中的依赖项
implementation 'org.springframework.boot:spring-boot-starter-validation'
以下我有一个类似的实体
@NoArgsConstructor
@Data
public class Person{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "FIRST_NAME")
@NotEmpty(message = "ENTER REQUIRED FIELDS - FIRST NAME")
private String firstName;
@Column(name = "LAST_NAME")
@NotEmpty(message = "ENTER REQUIRED FIELDS - LAST NAME")
private String lastName;
@Column(name = "BIRTH_DATE")
@Past(message = "PLEASE ENTER A VALID DATE ")
private Date birthDate;
}
这是日志跟踪
2020-10-25 13:09:11.421 DEBUG 21952 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet : Completed 500 INTERNAL_SERVER_ERROR```
我快速运行我的示例项目,其中所有内容都已配置,我认为日期格式是问题所在。 可用的默认格式是
这是我如何做到的
控制器
@PostMapping(value = "test-person")
public TestPerson testPerson(@Valid @RequestBody TestPerson testPerson) {
return testPerson;
}
@Getter
@Setter
@NoArgsConstructor
@Data
public static class TestPerson {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "FIRST_NAME")
@NotEmpty(message = "ENTER REQUIRED FIELDS - FIRST NAME")
private String firstName;
@Column(name = "LAST_NAME")
@NotEmpty(message = "ENTER REQUIRED FIELDS - LAST NAME")
private String lastName;
@Column(name = "BIRTH_DATE")
@Past(message = "PLEASE ENTER A VALID DATE ")
@NotNull
private Date birthDate;
}
@ControllerAdvice
public static class RestExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<Object> handleAllExceptionMethod(MethodArgumentNotValidException ex, WebRequest requset) {
// general response dump
return ResponseEntity.badRequest().body(ex.getBindingResult().getAllErrors());
}
}
还要确保对于birthDate
你不应该使用@NotEmpty
而是使用@NotNull
因为对于NotEmpty
length of character sequence is evaluated
这适用于与我有相同问题的任何人。 我的问题是 Date 对象来自 java.sql.Date。 我将它们更改为 java.util.Date 现在验证有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.