Lombok @Singular не влияет на дочерний класс с @Builder на конструкторе

Итак, я только что обнаружил аннотацию Lombok @Builder, и она мне нравится. Особенно с аннотациями @Singular для коллекций.

В случае наследования я читал, что наиболее эффективный способ создать 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 в поле заказов не действует. В Строитель можно передать только список заказов, а не один заказ. Есть ли лучший обходной путь для этой ситуации или я должен принять его таким, какой он есть?


person Stan Ostrovskii    schedule 10.05.2020    source источник


Ответы (1)


Вы можете добавить аннотацию @Singular к параметру List<Order> orders в конструкторе класса Customer, чтобы получить желаемый эффект.

@Builder
public Customer(String username, String password, String email, @Singular List<Order> orders) {
    super(username, password, email);
    this.orders = orders;
}   
person Laugslander    schedule 10.05.2020
comment
Спасибо, это было именно то, что я искал, но я не нашел ни в каких документах или примерах. - person Stan Ostrovskii; 10.05.2020