Hibernate Validator的奇怪行为

时间:2018-07-18 09:40:04

标签: java bean-validation hibernate-validator

在验证对象时,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验证程序在对象上运行。

enter image description here

我尝试删除@NotNull验证程序(因为@NotEmpty验证程序会处理它),但为了完整起见,我将其保留为演示@NotEmpty验证程序未返回任何内容。上图。

我不明白为什么将其部署到Web项目时不运行,但在JUnit测试下运行却可以正常工作。这里有我想念的东西吗?

1 个答案:

答案 0 :(得分:0)

好的,我已经解决了。我还没有意识到我已经将该项目部署到了​​错误的服务器上。我已将其部署到Payara 4.1.1.171服务器而不是Payara 5.181服务器。但是,我希望可以显示某些信息-也许是在部署时。