首页 > 解决方案 > 逆映射在默认函数上效果不佳

问题描述

抱歉,我是 mapstruct 的新手,假设我们有 Door、Car 类和 DoorDTO、CarDTO,如下所示,

我是否必须编写 doorToDoorsDTO 的反函数才能使 carDTOToCar 正常工作?

注意:我在doorsToDoorsDTO 上添加了@InheritInverseConfiguration 但生成的代码仍然不正确!

public class Door{
    Long id;
    String name;
    String color;
    ..
    ..
}

public class DoorDTO {
Long id;
String name;
}

public class Car {
    List<Door> doors;
}

public class CarDTO {
    List<DoorDTO> doorDTOs;
}

@Mapper
public interface MyMapper {
    CarDTO carToCarDTO(Car car);

    @InheritInverseConfiguration
    Car carDTOToCar(CarDTO carDTO);

    List<Door> doorsToDoorsDTO(List<Door> doors){
        List<DoorDTO> doorDTOs = new ArrayList<>();

        doors.foreach(door -> {
            DoorDTO doorDTO = new DoorDTO();
            doorDTO.setId(door.getId());
            doorDTO.setName(door.getName());
            doorDTOs .add(doorDTO);
        });
        return doorDTOs;
    }
}

标签: javaspringmapstruct

解决方案


MapStruct 将为您生成列表..

@Mapper
public interface MyMapper {
    CarDTO carToCarDTO(Car car);

    @InheritInverseConfiguration
    Car carDTOToCar(CarDTO carDTO);

    DoorDTO doorToDoorDTO(Door door);

    @InheritInverseConfiguration
    Door doorDToDoor(DoorDTO doorDTO);
}

推荐阅读