You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lombok @Builder警告求助:初始化表达式被忽略该如何修复?

解决Lombok @Builder在JPA实体类中的警告问题

你的实体类代码

@Entity
@Table(name = "users",
        uniqueConstraints = {
                @UniqueConstraint(columnNames = "username"),
                @UniqueConstraint(columnNames = "email")
        })
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class User {

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

    @NotBlank
    @Size(max = 50)
    private String username;

}

警告信息翻译

@Builder 会完全忽略字段的初始化表达式。如果你希望该初始化表达式作为默认值,请添加 @Builder.Default;如果该字段在构建时不应被设置,请将其设为 final。

修复方案

方案1:添加@Builder.Default保留默认值

如果希望字段的初始化值作为Builder构建时的默认值,给对应字段加上@Builder.Default注解。比如你的自增主键id,构建实体时无需手动赋值,就可以:

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

(注:null是引用类型的默认值,可省略不写,添加@Builder.Default后,Builder会保留这个默认行为,不会忽略初始化逻辑)

而username带有@NotBlank约束,必须在构建时指定有效值,因此不需要添加该注解,强制调用Builder时传入即可。

方案2:将字段设为final(仅适用于构建时无需赋值且后续不修改的字段)

如果某个字段在构建实体时完全不需要手动设置,且后续也不会被修改,但JPA自增主键不适合这种方式(因为持久化时框架需要为其赋值),示例写法如下:

private final String fixedField = "constant_value";

针对你的User类,优先推荐给id字段添加@Builder.Default注解,既符合JPA的自增主键逻辑,又能消除警告。

内容的提问来源于stack exchange,提问作者Nunyet Calçada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 14:15:11