«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как проверить комбинации полей в JPA 2.0/Hibernate?

Как проверить комбинации полей в JPA 2.0/Hibernate?

Опубликовано 11 ноября 2024 г.
Просматривать:210

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

Проверка комбинаций полей в JPA 2.0/Hibernate

При использовании проверки JPA 2.0/Hibernate можно столкнуться со сценариями, в которых проверка необходимо объединить несколько полей. Например, рассмотрим модель с полями getValue1() и getValue2():

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

Модель следует считать недействительной, если оба метода getValue1() и getValue2() имеют значение null, что указывает на недопустимые данные.

Ограничения уровня класса: решение

Для обработки таких проверок JPA 2.0/Hibernate предоставляет ограничения на уровне класса. Эти ограничения действуют на весь экземпляр класса, а не на отдельные свойства. Этот подход обеспечивает гибкость при проверке взаимосвязанных полей.

Определение ограничения

Определите ограничение уровня класса с именем AddressAnnotation для проверки комбинации полей. Установите для @Target значение ElementType.TYPE, чтобы применить это ограничение к классу, а не к конкретному свойству:

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

Реализация валидатора

Далее создайте реализацию валидатора MultiCountryAddressValidator. Этот класс получит экземпляр объекта и выполнит комбинированную проверку поля:

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

В этой реализации вы можете получить доступ к нескольким полям экземпляра объекта (в данном случае к адресу) и применить необходимые правила проверки.

Аннотирование класса модели

Наконец, аннотируйте свой класс MyModel с помощью AddressAnnotation:

@AddressAnnotation
public class MyModel {
    ...
}

Используя ограничения на уровне класса, вы можете эффективно и гибко проверять комбинации полей с помощью проверки Hibernate.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3