Я пытаюсь создать метод патча с использованием Mapstruct и Lombok Builder.
Но в сгенерированном коде отсутствует build()
вызов
Mapper с удалением нулевых значений:
@Mapper(
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS,
nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE
)
public interface CartMapper {
CartMapper INSTANCE = Mappers.getMapper(CartMapper.class);
Cart cartRequestToCart(CartRequest cartRequest);
Cart patch(CartRequest cartRequest, @MappingTarget Cart cart);
}
Вложенные классы имеют те же аннотации ломбоков, что и Корзина:
@Builder
@AllArgsConstructor(access = AccessLevel.PACKAGE)
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public class Cart {
Customer customer;
Owner owner;
Integer price;
String voucher;
}
Все вложенные классы имеют те же аннотации lombok, что и CartRequest, и структура такая же, как структура целевых объектов
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class CartRequest {
CustomerRequest customer;
OwnerRequest owner;
Integer price;
String voucher;
}
Для метода cartRequestToCart
все в порядке, здесь вызываются сборщики, а также во вложенных методах
@Override
public Cart cartRequestToCart(CartRequest cartRequest) {
if ( cartRequest == null ) {
return null;
}
CartBuilder cart = Cart.builder();
if ( cartRequest.getCustomer() != null ) {
cart.customer( customerRequestToCustomer( cartRequest.getCustomer() ) );
}
if ( cartRequest.getOwner() != null ) {
cart.owner( ownerRequestToOwner( cartRequest.getOwner() ) );
}
if ( cartRequest.getPrice() != null ) {
cart.price( cartRequest.getPrice() );
}
if ( cartRequest.getVoucher() != null ) {
cart.voucher( cartRequest.getVoucher() );
}
return cart.build();
}
Для метода patch
генерируется это и здесь в некоторых установщиках отсутствует build()
call
@Override
public Cart patch(CartRequest cartRequest, Cart cart) {
if ( cartRequest == null ) {
return null;
}
if ( cartRequest.getCustomer() != null ) {
if ( cart.getCustomer() == null ) {
cart.setCustomer( Customer.builder() ); // HERE build() missing
}
customerRequestToCustomer1( cartRequest.getCustomer(), cart.getCustomer() );
}
if ( cartRequest.getOwner() != null ) {
if ( cart.getOwner() == null ) {
cart.setOwner( Owner.builder() ); // HERE build() missing
}
ownerRequestToOwner1( cartRequest.getOwner(), cart.getOwner() );
}
if ( cartRequest.getPrice() != null ) {
cart.setPrice( cartRequest.getPrice() );
}
if ( cartRequest.getVoucher() != null ) {
cart.setVoucher( cartRequest.getVoucher() );
}
return cart;
}
Несколько советов, как это исправить? Большое спасибо.