No validator could be found for constraint 'org.hibernate.constraint.Length'异常

  • bug异常主要信息如下:
    javax.validation.UnexpectedTypeException: HV00030: No validator could be found for constraint ‘org.hibernate.constraint.Length’ validating type ‘java.time.LocalDateTime’ . Check configuration for 'inTime’
  • 如图所示:
    异常信息.png
  1. 先说明一下该bug的由来,一个微服务A去调用另一个微服务B,微服务B出现了上面的异常日志,而微服务A的异常日志如下,feign.FeignException:status 500 reading xxxhandlexx(String,xxDTO):
    异常信息500.png
  2. 由于被调用的B微服务已经有了异常日志,说明该调用已经发送到B微服务了,我们可以从B微服务的异常日志来排查异常。
  3. 回到第一张图的异常日志,这里已经很清晰了,javax.validation.UnexpectedTypeException: HV00030: No validator could be found for constraint ‘org.hibernate.constraint.Length’ validating type ‘java.time.LocalDateTime’ . Check configuration for ‘inTime’,validation参数校验的时候出现了异常,LocalDateTime的类型的变量无法找到有Length的校验约束,请检查’inTime’变量的配置,这里的inTime变量参数对象的一个字段,如图所示:inTime变量.png
    这里的@Length(max = 30)是导致异常的主要原因,笔者起初inTime的变量类型是String类型,上面加了@Length(max = 30)参数校验,后来换成了LocalDateTime,但是当时也不知道不能用@Length(max = 30)参数校验也忘记去掉了,这里导致方法入参的时候校验失败,抛出异常。那么为什么@Length注解无法用到LocalDateTime变量类型上呢?我们点进去看一下源码:@Length注解.png
    注释:Validate that the string is between min and max included.可以看到只是能用于注解到String类型的变量。把@Length去掉bug就解决了。
  • 如果文章有误,希望指出来。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值