【问题标题】:Hibernate Validator annotations not working休眠验证器注释不起作用
【发布时间】:2014-11-22 01:27:06
【问题描述】:

我刚刚将hibernate-validator-5.1.3.Final.jar 添加到我的类路径并注释了一个 POJO:

public class Person {
    @NotNull
    private String name;

    // etc...
}

然后我就用驱动去测试了:

public class Driver {
    public static void main(String[] args) {
        Person p = new Person();
        p.setName(null);
    }
}

这会在没有引发任何验证错误的情况下执行 - 我哪里出错了?

【问题讨论】:

  • 您只是在简单地构造一个Person 对象,因此不会在该对象上运行验证。 Hibernate 验证如何知道这个对象并且它是空的?与使用其他注解相同。您应该查看入门指南 - hibernate.org/validator/documentation/getting-started

标签: java hibernate bean-validation design-by-contract


【解决方案1】:

您应该运行验证引擎来检查它是否有效:

public class Driver {
    public static void main(String[] args) {
        Person p = new Person();
        p.setName(null);

      ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
      Set<ConstraintViolation<Person>> constraints = factory.getValidator().validate(p);
        // constraint will have the results of validation

    }
}

您还需要将javax.validation:validation-api 添加到您的类路径中。 大多数框架在后台执行这些验证逻辑以避免样板代码。

【讨论】:

  • 您对所需验证 API 包的评论为我节省了几个小时的调试时间,谢谢。需要它的原因是什么?
猜你喜欢
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多