MapStruct:将实体映射到具有相同实体类型的字段

MapStruct:将实体映射到具有相同实体类型的字段,mapstruct,Mapstruct,考虑这种情况: public class Car() { private Long id; private String name; private Car car; } public class CarDTO() { private Long id; private String name; private Long carId; } 我尝试使用以下命令从DTO映射到实体: @Mapping(target = "car", source = "carId

考虑这种情况:

public class Car() {
   private Long id;
   private String name;
   private Car car;
}

public class CarDTO() {
   private Long id;
   private String name;
   private Long carId;
}
我尝试使用以下命令从DTO映射到实体:

@Mapping(target = "car", source = "carId")
Car toEntity(CarDTO carDTO);
但它不起作用。 那个么,如何将一个实体映射到一个具有相同类型实体的字段呢

谢谢, 安德烈


这应该是可行的。

因为它在MapStruct中得到了回答

取决于你需要什么。您可以执行以下任一操作:

@Mapping(target = "car.id", source = "carId")
Car toEntity(CarDTO carDTO);
如果从
carId
创建
Car
需要更多的魔法,您可以手动完成这一部分:

@Mapping(target = "car", source = "carId")
Car toEntity(CarDTO carDTO);

default Car resolve(Long id) { 
    return /* something fancy */; 
}
这个奇特的东西也可以是一个DB调用,从那里获取一辆
汽车

@Mapping(target = "car", source = "carId")
Car toEntity(CarDTO carDTO);

default Car resolve(Long id) { 
    return /* something fancy */; 
}