工作问题记录:使用Lombok的@Accessors(chain = true)注解后BeanCopier后值为null问题

博客探讨了在使用MybatisPlus和Lombok的@Accessors(chain=true)注解时遇到的问题,该注解改变了set方法的返回类型,导致BeanCopier在转换实体类时无法正常工作。解决方案是删除@Accessors(chain=true)注解或者改用BeanUtils.copyProperties()方法进行对象复制。

工作问题记录:使用Lombok的@Accessors(chain = true)注解后BeanCopier后值为null问题

1 问题描述

项目中使用的MybatisPlus插件的代码自动生成功能,生成的实体类自动标记@Accessors(chain = true)注解,使用原来正常使用的Bean转换工具类查询结果为空,debug了一下,发现是在我自己的Bean转换公具类beanCopier.copy()方法出了问题。

在这里进行写操作时候,if判断不通过,无法写入数据到数组中
在这里插入图片描述

获取到的set数组为空
在这里插入图片描述

查看转换类的set方法发现有@Accessors(chain = true)注解的实体类里面的set方法有返回值。

在这里插入图片描述

正常编写的实体类:在这里插入图片描述
问题就出在返回值类型上,不加@Accessors(chain = true)注解的时候,类的set方法返回值类型是void,而加了注解之后返回值类型变为当前类。

解决方法:

  1. 将@Accessors(chain = true)注解删除
  2. 使用工具类手动传入BeanUtils.copyProperties(source, target),未测试
package com.sjsemi.app.surroundingx.entity.etst; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import lombok.experimental.Accessors; @Data //@EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Accessors(chain = true) @TableName("tb_etst_Lot") @ApiModel(value="Lot对象", description="ETSTLot表") public class EtstLotInfo { @ApiModelProperty(value = "tb_str.id") private Long etstId; @ApiModelProperty(value = "lot id") private String lotId; @ApiModelProperty(value = "step") private String step; @ApiModelProperty(value = "product id") private String prodId; @ApiModelProperty(value = "wafer qty") private Integer qty; @ApiModelProperty(value = "lot status") private String status; @ApiModelProperty(value = "lot vendor id") private String vendorId; @ApiModelProperty(value = "stage") private String stage; @ApiModelProperty(value = "shipping code") private String shippingCode; @ApiModelProperty(value = "lot type") private String lotType; @ApiModelProperty(value = "lot wafer id") private String waferId; @ApiModelProperty(value = "签核状态") private String requestStatus; @ApiModelProperty(value = "原mes vendorId") private String ctmCode; @ApiModelProperty(value = "原mes vendor Lot Id") private String ctmLotId; @ApiModelProperty(value = "原mes recipeId") private String recipeName; } 这是那个etstlotinfo,能看出问题
最新发布
10-23
package com.sjsemi.app.surroundingx.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.jyong.common.entity.MyEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import lombok.experimental.Accessors; /** * <p>@author: JE12457 </p> * <p>@date: 2024/10/31 </p> * <p>@description: </p> */ @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Accessors(chain = true) @TableName("tb_lot") @ApiModel(value="Lot对象", description="STR Lot表") public class Lot extends MyEntity { @ApiModelProperty(value = "tb_str.id") private Long strId; @ApiModelProperty(value = "lot id") private String lotId; @ApiModelProperty(value = "commission lot id") private String commissionLotId; @ApiModelProperty(value = "step") private String step; @ApiModelProperty(value = "product id") private String prodId; @ApiModelProperty(value = "wafer qty") private Integer qty; @ApiModelProperty(value = "lot status") private String status; @ApiModelProperty(value = "lot vendor id") private String vendorId; @ApiModelProperty(value = "stage") private String stage; @ApiModelProperty(value = "shipping code") private String shippingCode; @ApiModelProperty(value = "lot type") private String lotType; @ApiModelProperty(value = "fab_name=CP才有") private String waferId; @ApiModelProperty(value = "签核状态") private String requestStatus; @ApiModelProperty(value = "原mes vendorId") private String ctmCode; @ApiModelProperty(value = "原mes vendor Lot Id") private String ctmLotId; @ApiModelProperty(value = "原mes recipeId") private String recipeName; }
10-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值