一般的なAPIモジュール(マルチモジュールプロジェクト)では、いかなる種類のHibernateの検証アノテーションも使用できないという要件があるため、javax.validationの受け入れ可能なアノテーションを使用しました。
NotBlankアノテーションを含むドメインオブジェクト(vaadinを使用)を検証したいときに問題が発生します。次の例外が発生します
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'Java.lang.String'. Check configuration for 'name'
検証は呼び出しによって呼び出されます
Validation.buildDefaultValidatorFactory().validateValue(beanType, propertyName, value)
同じコードがhibernateのNotBlankで完全に機能します
また、javaxの@ Size @ NotNullは正常に機能します。
NotBlankバリデーターの実装をDefaultValidatorFactoryに提供することは可能ですか?
依存関係がありませんか? (私はすでにhibernate-validatorを持っています)
JavaxのNotBlankはhibernateのNotBlankと同じように機能しますか(つまり、文字列を検証しますか?)
これを解決する方法は?
問題は、その時点で使用しているバージョンにあります。 6.0.xシリーズに更新する必要があります。現在の最新のものは6.0.9です。 groupIdがorg.hibernate.validatorに変更されていることに注意してください。
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.9.Final</version>
</dependency>
javax.validation.constraints.NotBlank
は Bean Validation 2. の一部であり、そのバリデーターは5.3シリーズには存在しません。
as baeldung.com say JSR 380仕様によると、validation-api依存関係には標準の検証APIが含まれています。
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.0.Final</version>
Hibernate Validatorは、検証APIのリファレンス実装です。これを使用するには、次の依存関係を追加する必要があります。
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.2.Final</version>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>6.0.2.Final</version></dependency>