JPA 2.0/Hibernate を使用したフィールドの組み合わせの検証
JPA 2.0/Hibernate では、フィールドの組み合わせを検証する必要がある状況に遭遇することがあります。検証される。たとえば、ゲッター getValue1() と getValue2() を含むモデルがあるとします。そのモデルは、両方のゲッターが null でない場合にのみ有効であると見なされます。
このタイプの検証を実行するには、クラスを利用できます。 -level 制約は Bean Validation によって提供されます。クラスレベルの制約は、個々のプロパティではなくオブジェクト インスタンス全体に作用します。
クラス レベルの制約アノテーションの定義
まず、クラス レベルの制約アノテーションを定義します。 @AddressAnnotation など:
<code class="java">@Constraint(validatedBy = MultiCountryAddressValidator.class) @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface AddressAnnotation { String message() default "{error.address}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; }</code>
制約バリデーターの実装
次に、フィールドの組み合わせを検証する Multi CountryAddressValidator などの制約バリデーターを実装します。
<code class="java">public class MultiCountryAddressValidator implements ConstraintValidator<AddressAnnotation, Address> { public void initialize(AddressAnnotation constraintAnnotation) {} public boolean isValid(Address object, ConstraintValidatorContext context) { Country country = address.getCountry(); // Validation logic based on country-specific rules return isValid; } }</code>
クラスのアノテーション
最後に、検証するクラスにクラスレベルの制約アノテーションを付けます。
<code class="java">@AddressAnnotation public class MyModel { // ... }</code>
を利用することで、クラスレベルの制約を使用すると、JPA 2.0/Hibernate でフィールドの組み合わせを効果的に検証し、モデルの整合性を確保できます。
以上がJPA 2.0/Hibernate でクラスレベルの制約を使用してフィールドの組み合わせを検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。