UnexpectedTypeException: HV000030の発生ログ
2022-01-26 20:45:31.991 ERROR 71947 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.time.LocalDate'. Check configuration for 'birthday'] with root cause
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.time.LocalDate'. Check configuration for 'birthday'
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getExceptionForNullValidator(ConstraintTree.java:116) ~[hibernate-validator-6.2.0.Final.jar:6.2.0.Final]
・・・
UnexpectedTypeException: HV000030の原因と解決策
@Data
public class ChildRegisterForm {
@NotBlank
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate birthday;
}
上記はLocalDateという型に対して@NotBlankを付与しています。
しかし、@NotBlankによるバリデーションはCharSequenceの実装クラスでないとチェックできません。
(java.lang.String型はCharSequenceの実装クラスです)
LocalDateをStringに変えるか、@NotBlankではなく@NotNullを使うなどの解決策があります。