使用JPA 2.0/Hibernate 驗證欄位組合
在JPA 2.0/Hibernate 中,您可能會遇到需要組合欄位的情況得到驗證。例如,您可能有一個帶有 getter getValue1() 和 getValue2() 的模型,並且僅當兩個 getter 都不是 null 時,模型才被視為有效。
要執行此類驗證,您可以使用類別Bean Validation 提供的層級約束。類別級約束作用於整個物件實例而不是單一屬性。
定義類別級約束註釋
首先,定義類別級約束註釋,例如@AddressAnnotation:
<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>
實作約束驗證器
接下來,實作一個約束驗證器,例如MultiCountryAddressValidator,它驗證欄位的組合:
<code class="java">public class MultiCountryAddressValidator implements ConstraintValidator<AddressAnnotation, Address> { public void initialize(AddressAnnotation constraintAnnotation) {} public boolean isValid(Address object, ConstraintValidatorContext context) { Country country = address.getCountry(); // Validation logic based on country-specific rules return isValid; } }</code>
註解類別
最後,使用類別級約束註解來註解要驗證的類別:
<code class="java">@AddressAnnotation public class MyModel { // ... }</code>
透過利用類別級約束,您可以在JPA 2.0/Hibernate 中有效驗證欄位組合,確保模型的完整性。
以上是如何在 JPA 2.0/Hibernate 中使用類別級約束驗證欄位組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!