3 回答
TA贡献2065条经验 获得超13个赞
在 1.3.0.beta1 中支持以下内容:
package testStructMap;
import org.mapstruct.*;
import org.mapstruct.factory.*;
@Mapper
public interface ScheduleMapper {
ScheduleMapper INSTANCE = Mappers.getMapper( ScheduleMapper.class );
ScheduleTarget scheduleSourceToScheduleTarget(ScheduleSource scheduleSource);
default <T> T unwrapOptional(Optional<T> optional) {
return optional.orElse(null);
}
}
TA贡献1811条经验 获得超6个赞
我不熟悉 mapstruct,但我猜它映射了不同的对象:)
如果您的源类和目标类具有相同的结构,那么问题是
public Optional<LocalDate> getStartDate();
public void setStartDate(LocalDate startDate);
因此它获取 Optional 对象并尝试将其传递给接受 LocalDate 的方法。
所以你可能的行动方式是
更改 getter 以返回一个简单的对象
更改 setter 以接受可选(我想这很好,但似乎有点偏离)
声明一个映射器方法
TA贡献1788条经验 获得超4个赞
将目标 Optional 映射到非 Optional 的源,我们如何使其遵循以下示例:
@Named("HelperClass")
class Helper {
@Named("convertToOptional")
public Optional<KontaktpersonVerwandtschaftsgradTyp> convertToOptional(KontaktpersonVerwandtschaftsgradTyp optional) {
return optional != null ? Optional.of(optional) : Optional.empty();
};
}
@Mapping(target = "kontaktpersonVerwandtschaftsgrad", source = "tdfFall.kontaktpersonVerwandtschaftsgrad", qualifiedByName = { "HelperClass",
"convertToOptional" })
并且我们还需要添加用途和 Helper 类的名称
@Mapper(componentModel = "spring", uses = { Helper.class })
添加回答
举报