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!