У меня есть класс модели JPA, который работал так, как я ожидал.Несколько недель назад он начал выдавать ошибки и не смог сохраниться.
javax.persistence.RollbackException:
javax.validation.ConstraintViolationException:
One or more Bean Validation constraints were
violated while executing Automatic Bean Validation
on callback event: preUpdate
Я извлек ConstraintViolation
, который гласил:
must be greater or equal 0.01
Это привело меня к единственному атрибуту, отмеченному как@DecimalMin
в моей модели:
@Column(nullable = false, precision = 36, scale = 2)
@DecimalMin("0.01")
@NonNull
private BigDecimal amount;
Пока это звучит разумно, но странно то, что исключение возникает всегда, независимо от значения amount
.Я попробовал это с amount
из 1.00
и все еще получил исключение.
Единственный другой ключ, который у меня есть, находится в базе данных, где 0.00
было сохранено как последнее значение для amount
.Я не знаю, как это было возможно, и имеет ли это отношение к моей проблеме.
Редактировать
В комментариях к этим вопросам возникла необходимость для меняпрояснить окружающую среду.База данных развернута на стороне клиентов, но он не имеет к ней доступа.Схема является эксклюзивной для приложения, а учетные данные зашифрованы.Поэтому никто, кроме приложения, не должен был иметь доступ к базе данных.
Само приложение делится на модуль API и модуль UI .Оба используют один и тот же модуль core для доступа к базе данных.Модель также является частью основного модуля и используется двумя другими модулями.API развернут на сервере и позволяет строго ограничить доступ только к нескольким операциям.Он используется только для интеграции других приложений.Пользовательский интерфейс установлен на клиентском компьютере и предоставляет доступ к дополнительным функциям.
Количество 0.00
в базе данных, полученное из приложения пользовательского интерфейса.С этого момента любая попытка использовать ту же операцию через API не удалась, в то время как приложение пользовательского интерфейса все еще работает, как и ожидалось.
Все модули версионированы и собраны вместе в одном процессе сборки, и я гарантировал, что все версиина всех клиентов одинаковы.