首頁 >Java >java教程 >如何在 JPA 2.0/Hibernate 中組合驗證多個欄位?

如何在 JPA 2.0/Hibernate 中組合驗證多個欄位?

Linda Hamilton
Linda Hamilton原創
2024-11-05 22:30:02357瀏覽

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

驗證組合中的多個欄位

在JPA 2.0/Hibernate 中,多個欄位上的簡單@NotNull 註解只會驗證單一字段。若要驗證欄位組合,請考慮使用類別級約束。

如 Bean 驗證先睹為快第二部分:自訂約束中所述,類別級約束允許將驗證邏輯應用於物件內的多個屬性。這對於依賴多個欄位的複雜驗證規則特別有用。

實作

要實現類別級約束,請定義一個註解(@AddressAnnotation)和一個約束驗證器(多國位址驗證器)。註解指定了要套用的驗證規則,而驗證器則實作了驗證欄位組合的邏輯。

@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
        // ...
    }
}

在驗證器中,將物件實例傳遞給 isValid 方法,允許存取所有用於驗證目的的欄位。驗證器可以檢查欄位之間的相互依賴關係,例如郵遞區號和城市之間的相關性。

用法

一旦定義,類別級限制就可以應用於使用註解的模型類別:

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

此註解指示應使用MultiCountryAddressValidator來驗證getValue1() 和getValue2() 的組合。如果兩個欄位都為空,則模型被視為無效。否則,該模型是有效的。

以上是如何在 JPA 2.0/Hibernate 中組合驗證多個欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn