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

Bagaimana untuk Mengesahkan Pelbagai Medan dalam Gabungan dalam JPA 2.0/Hibernate?

Linda Hamilton
Linda Hamiltonasal
2024-11-05 22:30:02275semak imbas

How to Validate Multiple Fields in Combination in JPA 2.0/Hibernate?

Mengesahkan Berbilang Medan dalam Gabungan

Dalam JPA 2.0/Hibernate, anotasi @NotNull ringkas pada berbilang medan hanya akan mengesahkan medan individu. Untuk mengesahkan gabungan medan, pertimbangkan untuk menggunakan kekangan peringkat kelas.

Seperti yang diterangkan dalam Bean Validation Sneak Peek bahagian II: kekangan tersuai, kekangan peringkat kelas membenarkan logik pengesahan digunakan merentas berbilang sifat dalam objek . Ini amat berguna untuk peraturan pengesahan kompleks yang bergantung pada berbilang medan.

Pelaksanaan

Untuk melaksanakan kekangan peringkat kelas, tentukan anotasi (@AddressAnnotation) dan kekangan pengesah (MultiCountryAddressValidator). Anotasi menentukan peraturan pengesahan untuk digunakan, manakala pengesah melaksanakan logik untuk mengesahkan gabungan medan.

@AddressAnnotation 
public class Address {
    @NotNull @Max(50) private String street1;
    @Max(50) private String street2;
    @Max(10) @NotNull private String zipCode;
    @Max(20) @NotNull String city;
    @NotNull private Country country;
}

public class MultiCountryAddressValidator implements ConstraintValidator<AddressAnnotation, Address> {
    public boolean isValid(Address object, ConstraintValidatorContext context) {
        // Validate zipcode and city depending on the country
        // ...
    }
}

Dalam pengesah, tika objek dihantar kepada kaedah isValid, membenarkan akses kepada semua medan untuk tujuan pengesahan. Pengesah boleh menyemak kesalingbergantungan antara medan, seperti korelasi antara poskod dan bandar.

Penggunaan

Setelah ditakrifkan, kekangan peringkat kelas boleh digunakan untuk kelas model menggunakan anotasi:

@AddressAnnotation
public class MyModel {
    public Integer getValue1() {
        //...
    }
    public String getValue2() {
        //...
    }
}

Anotasi ini menunjukkan bahawa MultiCountryAddressValidator harus digunakan untuk mengesahkan gabungan getValue1() dan getValue2(). Jika kedua-dua medan adalah batal, model itu dianggap tidak sah. Jika tidak, model itu sah.

Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Pelbagai Medan dalam Gabungan 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