Rumah >Java >javaTutorial >Bagaimana untuk Mengesahkan Gabungan Medan dalam JPA 2.0/Hibernate?

Bagaimana untuk Mengesahkan Gabungan Medan dalam JPA 2.0/Hibernate?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 04:01:02858semak imbas

How to Validate Combinations of Fields in JPA 2.0/Hibernate?

Mengesahkan Gabungan Medan dalam JPA 2.0/Hibernate

Apabila menggunakan pengesahan JPA 2.0/Hibernate, adalah mungkin untuk menghadapi senario di mana pengesahan berbilang medan dalam kombinasi adalah perlu. Sebagai contoh, pertimbangkan model dengan medan getValue1() dan getValue2():

<code class="java">public class MyModel {
    public Integer getValue1() {
        //...
    }
    public String getValue2() {
        //...
    }
}</code>

Model harus dianggap tidak sah jika kedua-dua getValue1() dan getValue2() adalah batal, menunjukkan data tidak sah.

Kekangan Peringkat Kelas: Penyelesaian

Untuk mengendalikan pengesahan sedemikian, JPA 2.0/Hibernate menyediakan kekangan peringkat kelas. Kekangan ini beroperasi pada keseluruhan contoh kelas dan bukannya sifat individu. Pendekatan ini memberikan fleksibiliti dalam mengesahkan medan yang saling berkaitan.

Mentakrifkan Kekangan

Tentukan kekangan peringkat kelas bernama AddressAnnotation untuk mengesahkan gabungan medan. Tetapkan @Target kepada ElementType.TYPE untuk menggunakan kekangan ini pada kelas dan bukannya sifat tertentu:

<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>

Melaksanakan Pengesah

Seterusnya, cipta pengesah pelaksanaan MultiCountryAddressValidator. Kelas ini akan menerima contoh objek dan melakukan pengesahan medan gabungan:

<code class="java">public class MultiCountryAddressValidator implements ConstraintValidator<AddressAnnotation, Address> {
    ...
    // Implement the isValid() method to define the validation logic
}</code>

Dalam pelaksanaan ini, anda boleh mengakses berbilang medan contoh objek (Alamat dalam kes ini) dan menggunakan peraturan pengesahan yang diperlukan.

Menganotasi Kelas Model

Akhir sekali, anotasi kelas MyModel anda dengan AddressAnnotation:

<code class="java">@AddressAnnotation
public class MyModel {
    ...
}</code>

Dengan menggunakan kekangan peringkat kelas, anda boleh mengesahkan dengan berkesan gabungan medan dengan cara yang mantap dan fleksibel menggunakan pengesahan Hibernate.

Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Gabungan Medan dalam JPA 2.0/Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn