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 // ... } }
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() { //... } }
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!