Maison > Java > javaDidacticiel > le corps du texte

Comment valider les combinaisons de champs dans JPA 2.0/Hibernate ?

Mary-Kate Olsen
Libérer: 2024-11-02 04:01:02
original
770 Les gens l'ont consulté

How to Validate Combinations of Fields in JPA 2.0/Hibernate?

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() :

<code class="java">public class MyModel {
    public Integer getValue1() {
        //...
    }
    public String getValue2() {
        //...
    }
}</code>
Copier après la connexion

Le modèle doit être considéré comme non valide si getValue1() et getValue2() sont tous deux nuls, indiquant 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 :

<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>
Copier après la connexion

Implémentation du validateur

Ensuite, créez le validateur implémentation MultiCountryAddressValidator. Cette classe recevra l'instance d'objet et effectuera la validation des champs combinés :

<code class="java">public class MultiCountryAddressValidator implements ConstraintValidator<AddressAnnotation, Address> {
    ...
    // Implement the isValid() method to define the validation logic
}</code>
Copier après la connexion

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 Model

Enfin, annotez votre classe MyModel avec l'AddressAnnotation :

<code class="java">@AddressAnnotation
public class MyModel {
    ...
}</code>
Copier après la connexion

En utilisant des contraintes au niveau de la classe, vous pouvez valider efficacement combinaisons de champs de manière robuste et flexible en utilisant la validation Hibernate.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!