Lombok使用@Tolerate实现冲突兼容

 

使用Lombok能够减少程序员的重复工作提高工作效率,而Lombok的注解基本是基于标准的(如,标准的Builder模式),而实际开发的时候有时候为了实现某些能力会对标准实现做一些变形,而这个时候Lombok的标准实现就会无法满足需求。

例如,这样一个场景:

使用@Builder对一个DTO实现一个构造器,但是在做Json反序列化的时候发生错误,

原因就是缺少无参公共的构造函数,

而手动写一个无参构造函数的时候编译错误,就是和@Builder冲突,虽然标准的@Builder没法是需要私有化构造函数的,但是在某些场景下我们需要对这种标准变形,这个时候Lombok提供了@Tolerate实现对冲突的兼容。

/**
 * <p>
 * 包括能力、知识点等
 * </p>
 *
 * @author hlong
 * @since 2020-09-10
 */
@Data
@Entity
@Table(name = "que_attr")
@Builder
@ApiModel(value="QueAttr对象", description="包括能力、知识点等")
public class QueAttr implements Serializable {

    @Tolerate
    QueAttr() {}

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "属性编号,系统自动产生")
    @Id
    @Column(name = "attr_id")
    private Long attrId;

    @ApiModelProperty(value = "属性编码")
    @Column(name = "attr_code")
    private String attrCode;

    @ApiModelProperty(value = "属性名称")
    @Column(name = "name")
    private String name;

    @ApiModelProperty(value = "属性名称中文")
    @Column(name = "name_cn")
    private String nameCn;

    @ApiModelProperty(value = "简称")
    @Column(name = "name_short")
    private String nameShort;

    @ApiModelProperty(value = "上级节点")
    @Column(name = "attr_up")
    private Long attrUp;

    @ApiModelProperty(value = "级别:第1级为0")
    @Column(name = "lev")
    private Integer lev;

    @ApiModelProperty(value = "从小到大,从1开始")
    @Column(name = "sort_no")
    private Integer sortNo;

    @ApiModelProperty(value = "(枚举)属性分类信息 见字典表,这里主要是能力和知识点")
    @Column(name = "attr_type")
    private Long attrType;

    @ApiModelProperty(value = "机构编号:0公司")
    @Column(name = "org_id")
    private Long orgId;

    @Column(name = "subject")
    private Long subject;

    @Column(name = "key_stage")
    private Long keyStage;

    @Column(name = "grade")
    private Long grade;

    @Column(name = "term")
    private Integer term;

    @ApiModelProperty(value = "添加人")
    @Column(name = "user_create")
    private Long userCreate;

    @ApiModelProperty(value = "-1删除 0草稿 1有效")
    @Column(name = "status")
    private Integer status;

    @Column(name = "sys_code")
    private Long sysCode;

    @ApiModelProperty(value = "更新时间")
    @Column(name = "time_update")
    private Timestamp timeUpdate;

    @ApiModelProperty(value = "备注")
    @Column(name = "remark")
    private String remark;

    @ApiModelProperty(value = "属性的uuid")
    @Column(name = "attr_uuid")
    private String attrUuid;

    @ApiModelProperty(value = "属性的父级uuid")
    @Column(name = "attr_up_uuid")
    private String attrUpUuid;

    @ApiModelProperty(value = "教材版本uuid")
    @Column(name = "book_code")
    private String bookCode;

    @ApiModelProperty(value = "教材版本名称")
    @Column(name = "book_name")
    private String bookName;

    @ApiModelProperty(value = "年级的code-学院code")
    @Column(name = "grade_uuid")
    private String gradeUuid;


}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刹那的娜娜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值