Lombok @Singular 对 Constructor 上带有 @Builder 的子 class 没有影响

Lombok @Singular has no effect in child class with @Builder on Constructor

所以我刚刚发现了 Lombok @Builder 注释并且我喜欢它。特别是对于集合的 @Singular 注释。

在继承的情况下,我读到为子 class 创建 Builder 的最有效方法如下:

@Data
@AllArgsConstructor
class User {
    private String username;
    private String password;
    private String email;
}

@Data
@EqualsAndHashCode(callSuper = true)
public class Customer extends User {

    @Singular
    private List<Order> orders;

    @Builder
    public Customer(String username, String password, String email, List<Order> orders) {
        super(username, password, email);
        this.orders = orders;
    }   
}

此方法的唯一问题是订单字段上的 @Singular 无效。只能将订单列表传递给创建的构建器,而不是单个订单。对于这种情况是否有更好的解决方法,或者我必须接受它的现状?

可以在Customerclass的构造函数中的List<Order> orders参数中添加@Singular注解得到想要的效果

@Builder
public Customer(String username, String password, String email, @Singular List<Order> orders) {
    super(username, password, email);
    this.orders = orders;
}