Hibernate Validator 验证集

Hibernate Validator validate set

我有一个名为 @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,因为该实例不需要完全有效,它只需要满足我的 [=] 验证的那个条件18=].

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

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

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

    private Set<@Role User> users;
}

我们计划在一周内发布候选版本 1,因此它已经相当稳定了。