"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo validar combinaciones de campos en JPA 2.0/Hibernate?

¿Cómo validar combinaciones de campos en JPA 2.0/Hibernate?

Publicado el 2024-11-11
Navegar:459

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

Validación de combinaciones de campos en JPA 2.0/Hibernate

Al utilizar la validación JPA 2.0/Hibernate, es posible encontrar escenarios en los que la validación de Es necesario combinar varios campos. Por ejemplo, considere un modelo con los campos getValue1() y getValue2():

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

El modelo debe considerarse inválido si tanto getValue1() como getValue2() son nulos, lo que indica datos no válidos.

Restricciones a nivel de clase: la solución

Para manejar dichas validaciones, JPA 2.0/Hibernate proporciona restricciones a nivel de clase. Estas restricciones operan en toda la instancia de clase en lugar de en propiedades individuales. Este enfoque proporciona flexibilidad para validar campos interrelacionados.

Definición de la restricción

Defina una restricción a nivel de clase denominada AddressAnnotation para validar la combinación de campos. Establezca @Target en ElementType.TYPE para aplicar esta restricción a la clase en lugar de a una propiedad específica:

@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 { };
}

Implementación del validador

A continuación, cree la implementación del validador MultiCountryAddressValidator. Esta clase recibirá la instancia del objeto y realizará la validación de campo combinada:

public class MultiCountryAddressValidator implements ConstraintValidator {
    ...
    // Implement the isValid() method to define the validation logic
}

En esta implementación, puede acceder a múltiples campos de la instancia del objeto (Dirección en este caso) y aplicar las reglas de validación necesarias.

Anotar la clase de modelo

Finalmente, anota tu clase MyModel con AddressAnnotation:

@AddressAnnotation
public class MyModel {
    ...
}

Al utilizar restricciones de nivel de clase, puede validar eficazmente combinaciones de campos de manera sólida y flexible utilizando la validación de Hibernate.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3