我可以通过使用将一种对象类型转换为另一种对象类型的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);
答案 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;
}
}
}