[英]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.