今天在使用 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 问题还是没有解决,希望有人解决了这个问题,并给我留言。