我有一个名为@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
。
答案 0 :(得分:1)
如果可以的话,我建议您使用Hibernate Validator 6.0.0.Beta2。
我们现在支持容器元素约束,因此您可以执行以下操作:
public class Project {
// Validates
@Role
private User creator;
private Set<@Role User> users;
}
我们计划在一周内推出一个候选版本1,因此它已经非常稳定了。