我们开发过程中为了简化代码,经常会使用一些Lombok注解,例如@Data、@Builder、@Getter、@Setter等
最近开发过程中,获取某张表数据时,空值字段被覆盖了其他字段的值,一时找不到原因,疯狂抓头发,情况如下:
发现了没有,cardId被覆盖为memberId的值了,一开始我还以为是我字段映射的有问题,查了一下实体类,我也没用@TableField注解,没问题啊
开始查百度,看网上有没有小伙伴遇到这种情况,结果没有!我悟了,我这是遇到低级bug了!
我开始认真审查我的代码,从实体类注解开始,我在这个实体上使用了@Data和@Builder组合注解,@Data注解不用说了,就是为了简化代码用的,少了很多的get set方法
那么再看@Builder注解,我进入了实体类的class类,看@Builder注解对我的实体做了什么操作
这一切就解释的通了,这两个字段是相同的类型,而且我没有添加全参构造器,所以查数据之后在赋值时,@Builder不知道到底需要赋值给哪个字段,所以就会造成cardId赋值了memberId的值!真是巨坑啊!
以后要么就不用@Builder注解,要么就配合@NoArgsConstructor和@AllArgsConstructor注解一起使用