2

考虑这种情况:

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);

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

谢谢,安德里亚

4

2 回答 2

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

这应该有效。

于 2017-06-27T13:28:09.537 回答
0

正如 MapStruct Google Group中回答的那样

取决于你需要什么。你可以这样做:

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

如果Car从中创建 a 涉及更多魔法carId,您可以手动完成该部分:

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

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

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

于 2017-06-28T21:51:12.687 回答