Hibernate Validator验证集

时间:2017-06-21 07:47:31

标签: java validation bean-validation dropwizard hibernate-validator

我有一个名为@Role的自定义验证注释,我有自定义验证器验证User并且它有效。问题是当我想在Set<User>上使用此验证器来验证此集合上的每个元素时都是这样的

public class Project {
  // Validates
  @Role
  private User creator;

  // Throws error
  @Role
  private Set<User> users;
}

这令人遗憾地抛出了这个错误:

 javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'cz.studenthub.validators.annotations.Role' validating type 'java.util.Set<cz.studenthub.core.User>'

有没有办法验证集合而无需为Set<User>编写新的验证器?

注意:我不想将@Valid用于User因为该实例不需要完全有效,它只需要满足我验证的一个条件RoleValidator

1 个答案:

答案 0 :(得分:1)

如果可以的话,我建议您使用Hibernate Validator 6.0.0.Beta2。

我们现在支持容器元素约束,因此您可以执行以下操作:

public class Project {
    // Validates
    @Role
    private User creator;

    private Set<@Role User> users;
}

我们计划在一周内推出一个候选版本1,因此它已经非常稳定了。