javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint
使用hibernate validator出现上面的错误, 一般两种情况:
(1)注解与需要校验的数据类型不匹配,然后就会找不到。譬如在String 类型上使用@Min
org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree#getConstraintValidatorNoUnwrapping

org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager#getInitializedValidator
org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager#findMatchingValidatorClass
org.hibernate.validator.internal.util.TypeHelper#extractType
org.hibernate.validator.internal.util.TypeHelper#getValidatorsTypes
(2)validation-api和hibernate-validator的版本不匹配。导致注解没有对应的Validator。譬如:validation-api2.x已经收录了@javax.validation.constraints.NotEmpty,但hibernate-validator 5.x中还没有相应的Validator。
hibernate-validator 5.x中是使用组合注解的方式来处理@org.hibernate.validator.constraints.NotEmpty
如下图所示,@javax.validation.constraints.NotEmpty是没有对应的Validator的,如果使用肯定会报 Novalidator
温馨提示:Spring boot 中spring-boot-starter-web 中已经匹配的版本。如果不在pom.xml新增validation-api和hibernate-validator就不会出现版本不匹配
配套的版本:
(1)validation-api 1.1.0.Final + hibernate-validator 5.3.6.Final
(2)validation-api 2.0.1.Final + hibernate-validator 6.0.16.Final
如果在基本类型上面用NotEmpty或者NotBlank 会出现上面的错
f