关注公众号在哪里查找/吉安seo
使用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 {@TolerateQueAttr() {}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;}