Validation des combinaisons de champs dans JPA 2.0/Hibernate
Lors de l'utilisation de la validation JPA 2.0/Hibernate, il est possible de rencontrer des scénarios où la validation de plusieurs champs en combinaison sont nécessaires. Par exemple, considérons un modèle avec les champs getValue1() et getValue2() :
public class MyModel {
public Integer getValue1() {
//...
}
public String getValue2() {
//...
}
}
Le modèle doit être considéré comme invalide si getValue1() et getValue2() sont nuls, ce qui indique des données non valides.
Contraintes au niveau de la classe : la solution
Pour gérer de telles validations, JPA 2.0/Hibernate fournit des contraintes au niveau de la classe. Ces contraintes opèrent sur l'instance de classe entière au lieu de propriétés individuelles. Cette approche offre une flexibilité dans la validation des champs interdépendants.
Définition de la contrainte
Définissez une contrainte au niveau de la classe nommée AddressAnnotation pour valider la combinaison de champs. Définissez @Target sur ElementType.TYPE pour appliquer cette contrainte à la classe plutôt qu'à une propriété spécifique :
@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 { };
}
Implémentation du validateur
Ensuite, créez l'implémentation du validateur MultiCountryAddressValidator. Cette classe recevra l'instance d'objet et effectuera la validation de champ combiné :
public class MultiCountryAddressValidator implements ConstraintValidator {
...
// Implement the isValid() method to define the validation logic
}
Dans cette implémentation, vous pouvez accéder à plusieurs champs de l'instance d'objet (Adresse dans ce cas) et appliquer les règles de validation nécessaires.
Annotation de la classe de modèle
Enfin, annotez votre classe MyModel avec AddressAnnotation :
@AddressAnnotation
public class MyModel {
...
}
En utilisant des contraintes au niveau de la classe, vous pouvez valider efficacement des combinaisons de champs de manière robuste et flexible à l'aide de la validation Hibernate.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3