天天看点

Lombok @Builder 不能builder父类问题

今天在使用 Lombok 注解 Builder 的时候遇到一个很坑的问题,Builder 注解不能对父类进行链式调用,具体代码如下

BaseEntityCommon.java

@Data
@NoArgsConstructor
@AllArgsConstructor
@MappedSuperclass
public class BaseEntityCommon implements Serializable {
    protected static final long serialVersionUID = 1L;
    /**
     * 创建时间
     */
    @CreationTimestamp
    @Column(name = "create_time")
    private Date createTime;

    /**
     * 更新时间
     */
    @LastModifiedDate
    @Column(name = "update_time")
    private Date updateTime;

    /**
     * 新建操作员
     */
    @Column(name = "create_by")
    private String createBy;

    /**
     * 修改操作员
     */
    @Column(name = "update_by")
    private String updateBy;
}
           

RiskRules.java

@EqualsAndHashCode(callSuper = true)
@Entity
@Table(name = "t_risk_rule")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class RiskRules extends BaseEntityCommon {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String ruleId;

    private String ruleType;

    private String ruleServer;

    private String ruleService;

    private String ruleDesc;

    private String debitCreditFlg;
}
           

builder代码

ulesRepository.save(RiskRules.builder().ruleId(riskRule.getRuleId()).
                        ruleServer(riskRule.getRuleServer()).ruleService(riskRule.getRuleService()).
                        ruleDesc(riskRule.getRuleDesc()).debitCreditFlg(riskRule.getDebitCreditFlg()).
                        ruleType(riskRule.getRuleType()).build());
           

这里在 builder 链式加载的时候,找不到父类的属性。

于是在网上各种找解决办法,看到有文章说可以使用 SuperBuilder 代替 Builder,但是验证下来发现不行。

最后还是没有找到解决办法将代码改为rulesRepository.save(riskRule);

父类的字段已经可以正常插入更新到数据库,但是 Lombok 的 Builder 问题还是没有解决,希望有人解决了这个问题,并给我留言。