无法通过MapStruct从Enum To Boolean生成映射方法

时间:2017-07-28 07:54:23

标签: java maven mapping mapstruct

我可以通过使用将一种对象类型转换为另一种对象类型的mapstruct,从枚举到枚举成功使用。

不幸的是,我无法将Enum转换为Boolaen。我收到了以下错误。

"不能映射属性" ChoiceType isPriceHigh" to" java.lang.Boolean isPriceHigh"。考虑声明/实现一个映射方法:" java.lang.Boolean map(ChoiceType value)"。

这是我在mapstruct中使用的方法。任何帮助将不胜感激。

干杯 Alper

@ValueMappings({
        @ValueMapping(target = "true", source = "YES"),
        @ValueMapping(target = "false", source = "NO")
})
Boolean map(ChoiceType value);

1 个答案:

答案 0 :(得分:5)

@ValueMappings可用于在enum(s)而不是对象和enum之间进行映射。 Java中的Boolean不是enum,这就是您收到错误的原因。

为了进行这样的映射,你必须为它定义自己的方法。

public interface MyMapper {

    default Boolean map(ChoiceType value) {
        if (value == null) {
            return null;
        }

        switch(value) {
            case YES:
                return true;
            case NO:
            default:
                return false;
        }
    }
}