没有找到约束的验证器' javax.validation.constraints.Size'

时间:2018-05-03 17:26:52

标签: java spring hibernate bean-validation

我有以下错误

  

javax.validation.UnexpectedTypeException:HV000030:没有验证器可以   找到约束' javax.validation.constraints.Size'证实   输入' java.lang.Integer'。检查'打折'

的配置

我的代码是:

@Column(name= "discount_percentage")
@Size(min=0, max=90)
@Min(0)
@Max(90)
private Integer discountPercentage = 0;

我将其设置为0,因为我在加载视图时遇到NullPointerException。 并且是整数,因为我正在阅读其他问题,有些人说有时在使用@Size和原始类型时会出现问题。

我该怎么办?提前谢谢。

2 个答案:

答案 0 :(得分:8)

@Size是一个Bean验证注释,用于验证关联的String是否具有lengthminimum and maximum值为界的值。正如您的exception所说,它不适用于Integer类型。

使用:@Range

@Column(name= "discount_percentage")
@Range(min=0, max=90)
private Integer discountPercentage = 0;

或者您的云也只使用@Max or @Min,这也可以。有关详细信息,请查看this链接。

答案 1 :(得分:1)

@Size不用于验证min / max。

它用于验证集合的大小,字符串的长度等。

在这种情况下,您应该使用@Min@Max代替。

请参阅此处获取完整文档:https://docs.oracle.com/javaee/7/api/javax/validation/constraints/Size.html