为什么@DecimalMin会产生ConstraintViolationException?

时间:2019-02-12 07:02:09

标签: java validation eclipselink bean-validation

我有一个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}}进行了尝试,但仍然出现异常。

我仅有的其他线索是在数据库中,1.00被保留为0.00的最后一个值。我既不知道这怎么可能,也不知道是否与我的问题有关。


修改

在此问题下的评论提出我需要澄清环境。该数据库已部署在客户方,但他无权访问。该方案是应用程序专有的,并且凭据已加密。因此,除了应用程序之外,没有人可以访问数据库。

应用程序本身分为一个 API 模块和一个 UI 模块。两者都使用相同的 core 模块进行数据库访问。该模型也是核心模块的一部分,并被其他两个模块使用。该API部署在服务器上,并且严格限制了对少数操作的访问。它仅用于其他应用程序进行集成。 UI安装在客户端计算机上,并允许访问更多功能。

数据库中amount的数量源自UI应用程序。从那一刻起,通过API使用相同操作的任何尝试都失败了,而UI应用程序仍然可以按预期运行。

所有模块都经过版本控制,并在单个构建过程中一起构建,我确实确保所有客户端上的所有版本都相同。

0 个答案:

没有答案