Использование Mapstruct в Java, как сопоставить toEntity с внутренней сущностью?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Использование Mapstruct в Java, как сопоставить toEntity с внутренней сущностью?

Сообщение Anonymous »

У меня есть следующие данные (остальные поля удалены для краткости и ясности):

Код: Выделить всё

    @Entity
class CategoryEntity {
private Long id;
private String name;
}

@Entity
class ProductEntity {
private Long id;
private String name;
private CategoryEntity category;
}
Ввод:

Код: Выделить всё

record ProductDto(String name, String categoryName) { }
Код в Service выглядит так:

Код: Выделить всё

    public ProductEntity processProduct(ProductDto productDto) {
// find and check it exists
CategoryEntity categoryEntity = categoryService.findCategoryByName(productDto.categoryName());

ProductEntity productEntity = productMapper.toEntity(productDto);
productEntity.setCategory(categoryEntity);

// do some processing
// ...
return productEntity;
}
Как я могу реализовать преобразователь для преобразования dto продукта в сущность и использовать предоставленную сущность категории, не устанавливая ее вручную?
Я попробовал передать категорию экземпляр объекта в качестве параметра:

Код: Выделить всё

@Mapper
interface ProductMapper {
@Mapping(target = "category", source = "categoryEntity")
ProductEntity toEntity(ProductDto dto, CategoryEntity categoryEntity);
}
но в данном случае CategoryEntity.id используется для установки результата ProductEntity.id
, что совершенно неверно.
Это проект Quarkus с MapStruct 1.5.5.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ner-entity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»