【问题标题】:No validator could be found for constraint 'javax.validation.constraints.Size'找不到约束“javax.validation.constraints.Size”的验证器
【发布时间】:2018-10-14 02:32:56
【问题描述】:

我有以下错误

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 与原始类型一起使用时会出现问题。

我该怎么办?提前致谢。

【问题讨论】:

  • 仅供参考,这不是 JPA API。它是 Bean 验证 API。
  • @Size 仅适用于字符串类型
  • @RishabhAgarwal 也适用于收藏等。

标签: java spring hibernate bean-validation


【解决方案1】:

@Size 不用于验证最小值/最大值。

用于验证集合的大小、字符串的长度等

在这种情况下,您应该改用@Min@Max

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

【讨论】:

    【解决方案2】:

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

    使用:@Range

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

    或者你的云也只使用@Max or @Min,这也可以。欲了解更多信息,请查看this 链接。

    【讨论】:

    • 请注意@Range 在org.hibernate.validator.constraints 中找到,而不是在javax.validation.constraints 中找到
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 2023-01-05
    • 2019-03-07
    • 2015-06-27
    相关资源
    最近更新 更多