HV000030:没有找到约束的验证器' javax.validation.constraints.Size'验证类型' java.util.Map'

时间:2017-04-12 08:52:09

标签: java hibernate validation

我使用hibernate-validator

使用bean验证功能

验证器逻辑

 public enum ValidatorFactory {
    SINGLE_INSTANCE {

  javax.validation.ValidatorFactory avf =   Validation.buildDefaultValidatorFactory();

  @Override
  public Validator getValidator() {
     return avf.getValidator();
  }

  };

  public abstract Validator getValidator();
}

我在一个具有可选字段的对象上调用validator.validate(obj),如下所示

@UnwrapValidatedValue
@Valid
@Size(min = 1, max = 9)
private Optional<Map<Integer, AreaType>> field;

错误 javax.validation.UnexpectedTypeException:HV000030:找不到约束的验证器&#39; javax.validation.constraints.Size&#39;验证类型&#39; java.util.Map&#39;。

1 个答案:

答案 0 :(得分:0)

根据JPA文件:

  

评估字段或属性的大小,并且必须与   指定的边界。如果字段或属性是String,则为size   的字符串被评估。如果字段或属性是Collection,   评估集合的大小。如果字段或属性是   地图,评估地图的大小。如果字段或属性是   数组,计算数组的大小。使用其中一个可选的最大值   或min元素来指定边界。

据说,你不能把@Size放在Optional类型上,而只能放在String,Collections和Arrays上。

尝试删除Optional类型,如下所示:

@Size(min = 1, max = 9)
private Map<Integer, AreaType> field;
相关问题