javax.validation.Size校验Integer类型报HV000030错误求助
解决
javax.validation.UnexpectedTypeException问题 问题根源
你碰到的HV000030: No validator could be found for constraint 'javax.validation.constraints.Size' validating type 'java.lang.Integer'错误,核心原因很明确:@Size注解压根不适用于Integer数字类型。
@Size是用来校验字符串长度、集合元素数量或者数组长度的注解,它完全不负责数字的取值范围校验。你把它用在Integer类型的discountPercentage字段上,Hibernate Validator找不到对应的校验器,自然就抛出异常了。
修复方案
其实你已经用对了校验数字范围的注解——@Min(0)和@Max(90),这两个才是专门针对Integer、Long等数字类型做取值范围限制的。只需要把错误的@Size注解删掉就行,修改后的代码如下:
@Column(name= "discount_percentage") @Min(0) @Max(90) private Integer discountPercentage = 0;
补充说明
你把字段初始化为0来避免视图加载时的NullPointerException,这个做法很合理。如果字段没有初始化,当视图层尝试访问它时,若值为null就会触发空指针异常,初始化为0能很好地规避这个问题。
内容的提问来源于stack exchange,提问作者Lucas. D
相关产品推荐
相关产品推荐

