【问题标题】:Strange behaviour with Hibernate ValidatorHibernate Validator 的奇怪行为
【发布时间】:2018-07-18 18:03:36
【问题描述】:

我在使用 Hibernate Validator 6.0.9.Final 验证对象时遇到了一些奇怪的行为。给定以下 POJO:

public class Log {
    private Long uid;

    @javax.validation.constraints.NotEmpty
    @javax.validation.constraints.NotNull
    private String value;
    private long reference;
    private String type;
    private String createdDt;
    private String createdBy;
    private Boolean actioned;
    private Long dxr;

    // Constructors..

    // Getters and setters...

    // Equals and hashcode overrides...
}

现在,如果我使用新实例 JUnit 测试验证实体,我会得到以下输出:

@Test
public void test() {
    Log cLog = new Log();

    ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
    Validator beanvalidator = validatorFactory.getValidator();
    Set<ConstraintViolation<CommunicationLog>> constraintViolations = beanvalidator.validate(cLog);

    System.out.println(constraintViolations);
}

[ConstraintViolationImpl{interpolatedMessage='must not be null', propertyPath=value, rootBeanClass=class Log, messageTemplate='{javax.validation.constraints.NotNull.message}'}, 
ConstraintViolationImpl{interpolatedMessage='must not be empty', propertyPath=value, rootBeanClass=class Log, messageTemplate='{javax.validation.constraints.NotEmpty.message}'}]

这很好。但是,如果我在 Hibernate/Jersey 项目上运行此相同的代码,则只会运行 @NotNull 验证。我似乎无法让 @NotEmpty 验证器在对象上运行。

我已尝试删除 @NotNull 验证器(因为 @NotEmpty 验证器会处理它),但为了完整起见,我将其保留以证明 @NotEmpty 验证器未返回上图中的任何内容。

我不明白为什么它在部署到 Web 项目时没有运行,但在 JUnit 测试下运行时运行良好。我在这里有什么遗漏吗?

【问题讨论】:

    标签: java bean-validation hibernate-validator


    【解决方案1】:

    好的,我已经解决了这个问题。我没有意识到我将项目部署到了​​错误的服务器上。我已将其部署到 Payara 4.1.1.171 服务器而不是 Payara 5.181 服务器。但是,我本来希望会显示某种信息——也许是在部署时。

    【讨论】:

      猜你喜欢
      • 2014-12-25
      • 2019-01-30
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      相关资源
      最近更新 更多