天天看點

【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

使用hibernate validator出現上面的錯誤, 一般兩種情況:

(1)注解與需要校驗的資料類型不比對,然後就會找不到。譬如在String 類型上使用@Min

org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree#getConstraintValidatorNoUnwrapping

【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager#getInitializedValidator

【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager#findMatchingValidatorClass

【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint
【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint
【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

 org.hibernate.validator.internal.util.TypeHelper#extractType

【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

org.hibernate.validator.internal.util.TypeHelper#getValidatorsTypes

【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

(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

【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

溫馨提示: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

【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

(2)validation-api 2.0.1.Final + hibernate-validator 6.0.16.Final

【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint
【已解決】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

如果在基本類型上面用NotEmpty或者NotBlank 會出現上面的錯

f