Heim > Java > javaLernprogramm > Hauptteil

Wie validiere ich mehrere Felder in Kombination in JPA 2.0/Hibernate?

Linda Hamilton
Freigeben: 2024-11-05 22:30:02
Original
270 Leute haben es durchsucht

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

Validieren mehrerer Felder in Kombination

In JPA 2.0/Hibernate validieren einfache @NotNull-Anmerkungen für mehrere Felder nur einzelne Felder. Um eine Kombination von Feldern zu validieren, sollten Sie Einschränkungen auf Klassenebene in Betracht ziehen.

Wie im Bean Validation Sneak Peek Teil II: Benutzerdefinierte Einschränkungen beschrieben, ermöglichen Einschränkungen auf Klassenebene die Anwendung von Validierungslogik auf mehrere Eigenschaften innerhalb eines Objekts . Dies ist besonders nützlich für komplexe Validierungsregeln, die von mehreren Feldern abhängen.

Implementierung

Um Einschränkungen auf Klassenebene zu implementieren, definieren Sie eine Annotation (@AddressAnnotation) und eine Einschränkung Validator (MultiCountryAddressValidator). Die Annotation gibt die anzuwendende Validierungsregel an, während der Validator die Logik zur Validierung der Feldkombination implementiert.

@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
        // ...
    }
}
Nach dem Login kopieren

Im Validator wird die Objektinstanz an die Methode isValid übergeben, wodurch der Zugriff für alle möglich ist Felder für Validierungszwecke. Der Validator kann die gegenseitigen Abhängigkeiten zwischen Feldern überprüfen, beispielsweise die Korrelation zwischen Postleitzahl und Stadt.

Verwendung

Nach der Definition kann die Einschränkung auf Klassenebene angewendet werden die Modellklasse unter Verwendung der Annotation:

@AddressAnnotation
public class MyModel {
    public Integer getValue1() {
        //...
    }
    public String getValue2() {
        //...
    }
}
Nach dem Login kopieren

Diese Annotation gibt an, dass der MultiCountryAddressValidator verwendet werden sollte, um die Kombination von getValue1() und getValue2() zu validieren. Wenn beide Felder null sind, gilt das Modell als ungültig. Ansonsten ist das Modell gültig.

Das obige ist der detaillierte Inhalt vonWie validiere ich mehrere Felder in Kombination in JPA 2.0/Hibernate?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!