Значения полей DTO равны null. Почему?

Пишу MVC-приложение(интернет-магазин) со Spring-Boot, Hibernate. Для конвертации классов в DTO и наоборот использую Mapstruct. У меня есть класс Drink, от которого наследуются классы Tea и Coffee. Соответственно, я создал по той же иерархии и DTO-классы. Добавил мапперы через Mapstruct и вроде все замапилось. Но когда вывожу все drinks через jpa-репозитории findAll, у меня поля класса TeaDTO и CoffeeDTO выдаются с null, хотя поля унаследованные от DrinkDTO выводятся с корректными значениями из БД. Почему так происходит и как это исправить?

Класс Drink:

@Data
@Entity
@NoArgsConstructor
@Table(name = "drink")
@Inheritance(strategy = InheritanceType.JOINED)
public class Drink {

    // Fields
    //
    @Id
    @GeneratedValue
    private Long id;

    /** Название напитка */
    private String name;

    /** Цена напитка */
    private BigDecimal price;

    /** Описание напитка */
    private String about;

    /** Флаг удаления */
    @Column(name = "is_deleted")
    private boolean isDeleted;

    // Relationships
    //
    /** Упаковка напитка */
    @ManyToOne
    @JoinColumn(name = "packaging_id")
    private Packaging packaging;

    /** Производитель */
    @ManyToOne
    @JoinColumn(name = "manufacturer_id")
    private Manufacturer manufacturer;

    /** Страна производитель */
    @ManyToOne
    @JoinColumn(name = "country_id")
    private Country country;
}

Класс Tea(для примера, класс кофе не буду кидать):

@Entity
@Table(name = "tea")
public class Tea extends Drink {

    // Relationships
    //
    /** Тип чая */
    @ManyToOne
    @JoinColumn(name = "type_id")
    private TeaType teaType;

    /** Цвет чая */
    @ManyToOne
    @JoinColumn(name = "color_id")
    private TeaColor teaColor;
}

Класс DrinkDTO:

@Data
public class DrinkDTO {

    // Fields
    //
    protected Long id;

    protected String name;

    protected float price;

    protected String about;

    protected GeneralCatalogDTO packaging;

    protected GeneralCatalogDTO manufacturer;

    protected GeneralCatalogDTO country;
}

Класс TeaDTO:

@EqualsAndHashCode(callSuper = true)
@Data
public class TeaDTO extends DrinkDTO {

    private TeaType teaType;

    private TeaColor teaColor;
}

Mapstruct mapper:

@Mapper(componentModel = "spring")
public interface TeaMapper {

    TeaMapper INSTANCE = Mappers.getMapper(TeaMapper.class);

    TeaDTO teaToTeaDTO(Tea tea);

    Tea teaDTOtoTea(TeaDTO teaDTO);

    @IterableMapping(qualifiedByName = "teaToTeaDTO")
    default Page<TeaDTO> teaToTeasDTO(Page<Tea> teas) {
        return teas.map(this::teaToTeaDTO);
    }
}

Service:

public PageDTO<TeaDTO> findAll(int page, int pageSize) {

        // По дефолту он сортирует список по возрастанию цены
        PageRequest pageRequest = PageRequest.of(page, pageSize, Sort.by("price").ascending());

        final Page<Tea> teas = teaRepository.findAll(pageRequest);

        return new PageDTO<>(teaMapper.teaToTeasDTO(teas));
    }

введите сюда описание изображения

Хотя когда debug, то в выводе показывает, что все ок: введите сюда описание изображения


Ответы (0 шт):