首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >hibernate验证器抛出异常ValidationException: HV000028用于@Past注释

hibernate验证器抛出异常ValidationException: HV000028用于@Past注释
EN

Stack Overflow用户
提问于 2020-10-25 20:31:51
回答 2查看 1.4K关注 0票数 0

我正在使用spring启动项目中的hibernate验证器验证一个实体。我得到了日期验证器@Past的一个例外。我面对javax.validation.ValidationException: HV000028: Unexpected exception during isValid call

这是我的gradle.build文件中的依赖项

implementation 'org.springframework.boot:spring-boot-starter-validation'

下面是我的一个类似的实体

代码语言:javascript
复制
@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;    

}

这是一个日志跟踪

代码语言:javascript
复制
2020-10-25 13:09:11.421 DEBUG 21952 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet        : Completed 500 INTERNAL_SERVER_ERROR```
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-05 20:44:53

这是给和我有同样问题的人的。我的问题是来自java.sql.Date的日期对象。现在,我将它们更改为java.util.Date验证工作。

票数 0
EN

Stack Overflow用户

发布于 2020-10-26 09:44:26

我快速地运行了我的示例项目,其中所有的东西都已经配置好了,我认为日期格式是问题所在。可用的默认格式如下

  • yyyy-MM-dd'T'HH:mm:ss.SSSX
  • yyyy-MM-dd'T'HH:mm:ss.SSS
  • EEE,dd MMM yyyy HH:mm:ss zzz
  • yyyy-MM-dd

我就是这样做的

控制器

代码语言:javascript
复制
@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

代码语言:javascript
复制
length of character sequence is evaluated
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64528479

复制
相关文章

相似问题

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