我有以下错误
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和原始类型时会出现问题。
我该怎么办?提前谢谢。
答案 0 :(得分:8)
@Size
是一个Bean验证注释,用于验证关联的String
是否具有length
以minimum 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