2014-11-22 90 views
2

我只是说hibernate-validator-5.1.3.Final.jar到我的类路径和注释的一个POJO:Hibernate验证注释不工作

public class Person { 
    @NotNull 
    private String name; 

    // etc... 
} 

然后我带着司机来测试它:

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

该执行不抛出任何验证错误 - 我要去哪里?

+1

你只是简单地构造一个Person对象,所以不会在该对象上运行验证。 Hibernate验证如何知道这个对象,并且它是空的?这与使用其他注释相同。您应该查看入门指南 - http://hibernate.org/validator/documentation/getting-started/ – mkobit 2014-11-22 01:34:30

回答

7

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

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到类路径中。 大多数框架都在场景后面执行这些验证逻辑以避免样板代码。

+1

您对有关所需验证-api包的评论为我节省了几个小时的调试时间,谢谢。为什么需要它的原因是什么? – vvondra 2015-12-14 22:29:11