Java 程序性和声明性约束声明

Java 程序性和声明性约束声明,java,hibernate-validator,Java,Hibernate Validator,我目前正在通过以下代码验证我的bean: Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); validator.validateValue(class, propertyName, value); 我的课程是这样的: public static interface Primitive { public Primitive setString(String s); @N

我目前正在通过以下代码验证我的bean:

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
validator.validateValue(class, propertyName, value);
我的课程是这样的:

public static interface Primitive {
    public Primitive setString(String s);

    @NotNull
    public String getString();
}
到目前为止,这一切都很顺利。但是,使用普通的hibernate验证器,似乎不可能从给定的类中获取约束定义/映射,也不可能像前面描述的那样添加额外的约束。看起来约束映射都是手动的,我不喜欢这样做。另一方面,我使用
Validator.getConstraintsForClass(class)
获得的BeanDescriptor似乎不能用于ConstraintMapping

这就是我的想法:

ConstraintMapping mapping = new ConstraintMapping();

mapping
    .type(Order.class).getConstraints()/*reads the constraints declared on the Bean*/
        .property("customer", ElementType.FIELD)/*add additional constraints*/
            .constraint(NotNullDef.class);
Validator validator = Validation
    .byProvider(HibernateValidator.class)
    .configure()
    .addMapping(mapping)
    .buildValidatorFactory()
    .getValidator();

编程约束API已经是可添加的,这意味着您不需要建议的getConstraints。另请参见验证程序在线文档-

默认情况下,通过fluent API添加的约束将添加到 通过标准配置功能配置的约束。 但也可以忽略注释和配置的XML 必要时的限制