【踩坑日记Exception之Lombok与JSR303检验之间的恩怨情仇】(JSON parse error: Cannot construct instance of `xxx.entity`)

博客讨论了Lombok的@Data注解与JSR303校验注解(@NotEmpty)如何相互作用,导致实体类失去无参构造器,进而引起JSON反序列化失败的问题。当Lombok遇到JSR303的注解时,原本应生成的无参构造器被替换为包含校验注解的有参构造器,从而在SpringMVC中引发转化错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错信息

JSON parse error: Cannot construct instance of xxx.entity.BrandEntity (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of xxx.entity.BrandEntity (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)\n at [Source: (PushbackInputStream); line: 1, column: 2

报错原因

存在有参构造器,没有无参构造器,导致反序列化失败,继而SpringMVC无法转化前端传输过来的JSON字符串

根本原因

1、Lombok和JSR303产生的反应

  • 正常情况下:实体类加上@Data注解,Lombok就会在编译时添加上类的空参构造器
  • 但使用JSR303对实体类进行限制后使用@NotEmpty注解,导致Lombok将空参构造器改变成包含该注解在内的所有字段的有参构造器,原本应该生成的空参构造器没了
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值