hibernate 找不到约束'javax.validation.constraints.Size'的验证器

8i9zcol2  于 2022-11-24  发布在  Java
关注(0)|答案(3)|浏览(206)

我有以下错误
异常类型:HV 000030:找不到验证类型“java.lang. Integer”的约束“javax.validation.constraints.Size”的验证器。请检查“discounted”的配置
我的代码是:

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

我把它设置为0是因为我在加载视图时得到了一个NullPointerException。它是Integer是因为我读到了别人的问题,有些人说有时在使用@Size和基元类型时会有问题。
我该怎么办?先谢谢你了。

56lgkhnf

56lgkhnf1#

@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链接。

9rnv2umw

9rnv2umw2#

@Size不用于验证最小值/最大值。
它用于验证集合的大小、字符串的长度等。
在这种情况下,您应该改用@Min@Max
完整文档请参考此处:https://docs.oracle.com/javaee/7/api/javax/validation/constraints/Size.html

mv1qrgav

mv1qrgav3#

我在参数类型与验证器不匹配时观察到了这种模式。因为这里List<String>List<Long>不匹配
Ex验证人:

public class MaxValidation implements ConstraintValidator<MaxParameterSize, List<String>> {
  ....
 }

注解使用:

public Response abc(@NotNull @MaxParameterSize(10) List<Long> parcelIds { 
    ....
    }

相关问题