MapStruct:使用相同类型的实体映射实体

时间:2017-06-27 13:23:29

标签: 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")
Car toEntity(CarDTO carDTO);

但它不起作用。 那么,我如何映射具有相同类型实体的字段的实体呢?

谢谢, 安德烈

2 个答案:

答案 0 :(得分:0)

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

这应该有用。

答案 1 :(得分:0)

正如MapStruct Google Group

中所回答的那样

取决于您的需求。你可以这样做:

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

如果从Car创建carId涉及更多魔法,您可以手动执行该部分:

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

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

花哨的东西也可以是从那里获取Car的数据库调用。