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

unable to generate mapping method from Enum To Boolean by MapStruct

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

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

"Can't map property "ChoiceType isPriceHigh”到"java.lang.Boolean isPriceHigh"。考虑declare/implement一个映射方法:"java.lang.Boolean map(ChoiceType value)"。

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

干杯 阿尔珀

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

@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;
        }
    }
}