我希望设备 bean 将每个属性设置为目标 bean,如文档中所示。这里出了什么问题?
如果您不想显式命名嵌套源 bean 中的所有属性,您可以使用 .作为目标。这将告诉 MapStruct 将每个属性从源 bean 映射到目标对象。下面是一个例子:
@Mapping(target = ".", qualifiedByName = "device")
public abstract ClientRegisterDeviceRequest toDeviceRequest(RegisterDeviceRequest registerDeviceRequest);
@Named("device")
public DeviceInfo getDevice() {
return DeviceInfoService.get();
}
我不确定你想在这里实现什么目标。但是,使用
@Mapping(target = ".")
需要定义 source
。否则,MapStruct 无法知道它需要映射什么。
我建议做的是这样的:
也许你需要这样的东西:
@Mapper
public abstract class MyMapper {
public ClientRegisterDeviceRequest toDeviceRequest(RegisterDeviceRequest registerDeviceRequest) {
return toDeviceRequest(regusterDeviceRequest, DeviceInfoService.get());
}
@Mapping(target = ".", source = "device")
protected abstract ClientRegisterDeviceRequest toDeviceRequest(RegisterDeviceRequest registerDeviceRequest, DeviceInfo device);
}