Не удалось найти валидатор для ограничения «jakarta.validation.constraints.Pattern» — ошибка все еще появляется даже после удаления валидатора из класса

Я долгое время использовал @Pattern для проверки ввода текста в своем проекте, и у меня никогда не возникало проблем. Внезапно я получаю следующую ошибку:

jakarta.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'jakarta.validation.constraints.Pattern' validating type 'com.helpmesaythis.hmst3.profile.promo.model.entity.DiscountPromoCode'. Check configuration for 'discountPromoCode'

Есть две странные вещи:

Есть и другие классы, использующие его без проблем, и я уже давно даже не прикасался к этому проблемному классу (он всегда работал).

Я пробовал закомментировать и даже полностью удалить его из класса, но ошибка все равно появляется. Как это вызывает проблему, если ее даже не существует?

import com.helpmesaythis.hmst3.profile.partner.model.entity.Partner; 
import jakarta.persistence.*; 
import jakarta.validation.constraints.Pattern; 

@Entity 
@Table(name = "discount_promo_code") 
public class DiscountPromoCode { 
    ... 
    @Size(min = 4, max = 20, message = "Promo Code must be between 4-20 characters") 
    @Pattern(regexp = "[A-Za-z0-9]+$", message = "Promo Code can contain only letters and numbers") 
    @Column(name = "promo_code") 
    private String promoCode; 
    ... 
}

Я убедился, что все зависимости обновлены. Моя Spring Boot обновлена.

Опять же: аннотация @Pattern работает везде, но я получаю одно и то же сообщение об ошибке даже после того, как она была удалена из проблемного класса.

Когда включаю spring.jpa.properties.javax.persistence.validation.mode=none все работает как надо.

Есть идеи?

В сообщении об ошибке упоминается «Проверьте конфигурацию на наличие discountPromoCode». Где определено это поле? Поле, которое вы показываете нам в вопросе, — promoCode.

andrewJames 23.06.2024 19:34

Я поразительно глуп, а вы абсолютно точно нашли ошибку. Я пытался присвоить @Pattern не-String, где поле определено (не в самом классе!). Спасибо.

James 23.06.2024 19:48

Неправильное чтение сообщений об ошибках - со мной тоже случается. Рад, что это решено.

andrewJames 23.06.2024 20:15
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
90
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как отметил в комментариях andrewJames, ошибка исходила из поля discountPromoCode, а не из класса DiscountPromoCode. Сама ошибка заключалась в том, что я использовал @Pattern для проверки поля, которое не было строкой.

Другие вопросы по теме

Похожие вопросы

Свойство цвета строки состояния Android не применяется к действиям, выполненным из предустановки действий «Пустые представления»
Область столбца-заполнителя полосы прокрутки в стиле TableView
Невозможно получить доступ к классу Retrofit2.Response. Проверьте путь к классам вашего модуля на предмет отсутствующих или конфликтующих зависимостей
Ошибка запуска log4j2. Нераспознанный спецификатор преобразования и спецификатор формата
Обработка внутренней ошибки сервера, когда эмитент OAuth недоступен в WebFluxSecurity
Почему нам следует устанавливать для -XX:InitialRAMPercentage и -XX:MaxRAMPercentage одно и то же значение для облачной среды?
Как сделать массив потокобезопасным в Java?
Модульное тестирование Новый метод обмена RestClient Spring() с покрытием кода
Org.hibernate.Exception.JDBCConnectionException: невозможно открыть соединение JDBC
Скрипт .bat не может найти javaw при вызове из Python os.command