Mengesahkan Pelbagai Medan dalam Gabungan dalam JPA 2.0/Hibernate
Apabila melakukan pengesahan data menggunakan JPA 2.0/Hibernate, ia mungkin perlu untuk mengesahkan gabungan pelbagai medan untuk memastikan integriti data. Sebagai contoh, pertimbangkan model dengan dua medan, getValue1() dan getValue2(). Model ini dianggap tidak sah jika kedua-dua medan adalah batal, tetapi sah sebaliknya.
Kekangan Peringkat Kelas untuk Pengesahan Berbilang Medan
Untuk mengesahkan berbilang sifat secara bersama, anda boleh menggunakan kekangan peringkat kelas. Spesifikasi Bean Validation membolehkan anda menentukan kekangan tersuai yang digunakan pada keseluruhan kelas dan bukannya sifat individu. Pendekatan ini memberikan fleksibiliti untuk melakukan pengesahan kompleks yang memerlukan akses kepada berbilang medan.
Cara Menentukan Kekangan Peringkat Kelas
Untuk menentukan kekangan peringkat kelas, ikuti langkah-langkah ini:
Sampel Pelaksanaan
Di bawah ialah contoh pelaksanaan kekangan peringkat kelas untuk mengesahkan gabungan getValue1() dan 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>
Memohon Kekangan Peringkat Kelas
Annotate kelas MyModel anda dengan anotasi @MyModelConstraint untuk menggunakan kekangan peringkat kelas:
<code class="java">@MyModelConstraint public class MyModel { public Integer getValue1() { ... } public String getValue2() { ... } }</code>
Sekarang, apabila mengesahkan contoh MyModel, rangka kerja akan menggunakan MyModelConstraintValidator dan memastikan bahawa kedua-dua getValue1() dan getValue2() adalah bukan nol sebelum menganggap model itu sah.
Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Pelbagai Medan dalam Gabungan menggunakan JPA 2.0/Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!