ホームページ >Java >&#&チュートリアル >JPA 2.0/Hibernate を使用して複数のフィールドを組み合わせて検証するにはどうすればよいですか?
JPA 2.0/Hibernate で複数のフィールドを組み合わせて検証する
JPA 2.0/Hibernate を使用してデータ検証を実行する場合、検証が必要になる場合があります。データの整合性を確保するために複数のフィールドを組み合わせます。たとえば、getValue1() と getValue2() という 2 つのフィールドを持つモデルを考えてみましょう。両方のフィールドが null の場合、モデルは無効とみなされますが、それ以外の場合は有効です。
複数フィールド検証のクラスレベルの制約
複数のプロパティを組み合わせて検証するには、次のことができます。クラスレベルの制約を利用します。 Bean Validation 仕様を使用すると、個々のプロパティではなくクラス全体に適用するカスタム制約を定義できます。このアプローチにより、複数のフィールドへのアクセスを必要とする複雑な検証を柔軟に実行できます。
クラス レベルの制約を定義する方法
クラス レベルの制約を定義するには、次の手順に従います。これらの手順:
実装例
以下は、getValue1() と getValue2() の組み合わせを検証するためのクラスレベル制約の実装例です。
<code class="java">@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = MyModelConstraintValidator.class) public @interface MyModelConstraint { String message() default "{error.invalidModel}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; } public class MyModelConstraintValidator implements ConstraintValidator<MyModelConstraint, MyModel> { public void initialize(MyModelConstraint constraintAnnotation) {} public boolean isValid(MyModel object, ConstraintValidatorContext context) { // Perform validation logic here return !(object.getValue1() == null && object.getValue2() == null); } }</code>
適用クラス レベルの制約
MyModel クラスに @MyModelConstraint アノテーションを付けて、クラス レベルの制約を適用します。
<code class="java">@MyModelConstraint public class MyModel { public Integer getValue1() { ... } public String getValue2() { ... } }</code>
ここで、MyModel インスタンスを検証するときに、フレームワークモデルが有効であるとみなされる前に、MyModelConstraintValidator を適用し、getValue1() と getValue2() の両方が null でないことを確認します。
以上がJPA 2.0/Hibernate を使用して複数のフィールドを組み合わせて検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。