"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como validar combinações de campos no JPA 2.0/Hibernate?

Como validar combinações de campos no JPA 2.0/Hibernate?

Publicado em 2024-11-11
Navegar:373

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

Validando combinações de campos no JPA 2.0/Hibernate

Ao usar a validação JPA 2.0/Hibernate, é possível encontrar cenários onde a validação de vários campos em combinação são necessários. Por exemplo, considere um modelo com campos getValue1() e getValue2():

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

O modelo deve ser considerado inválido se getValue1() e getValue2() forem nulos, indicando dados inválidos.

Restrições de nível de classe: a solução

Para lidar com tais validações, JPA 2.0/Hibernate fornece restrições em nível de classe. Essas restrições operam em toda a instância da classe, em vez de em propriedades individuais. Essa abordagem fornece flexibilidade na validação de campos inter-relacionados.

Definindo a restrição

Defina uma restrição em nível de classe chamada AddressAnnotation para validar a combinação de campos. Defina @Target como ElementType.TYPE para aplicar esta restrição à classe em vez de uma propriedade 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 { };
}

Implementando o validador

Em seguida, crie a implementação do validador MultiCountryAddressValidator. Esta classe receberá a instância do objeto e realizará a validação dos campos combinados:

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

Nesta implementação, você pode acessar vários campos da instância do objeto (Endereço neste caso) e aplicar as regras de validação necessárias.

Anotação da classe do modelo

Finalmente, anote sua classe MyModel com AddressAnnotation:

@AddressAnnotation
public class MyModel {
    ...
}

Ao utilizar restrições em nível de classe, você pode validar efetivamente combinações de campos de maneira robusta e flexível usando a validação do Hibernate.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3