Mapstruct 可选映射
Mapstruct optional mapping
我想知道如何使用 mapstruct
更改此 mapping
以避免 nullPointer 异常。
rep.getClientLevelType()
可以为空,也可以是 DIRECT
或
RELATED
。当fromValue
在null
或empty.string
上执行时,出现空指针异常。
我不知道该怎么做,只有在 rep.getClientLevelType()
不为 null 使用 mapstruct
.
时才会出现此字段
@Mapping(target = "clientLevelType", expression = "java(ClientLevelType.fromValue(rep.getClientLevelType()))")
从 wsdl 生成的枚举文档:
@XmlType(name = "ClientLevelType")
@XmlEnum
public enum ClientLevelType {
DIRECT,
RELATED;
public String value() {
return name();
}
public static ClientLevelType fromValue(String v) {
return valueOf(v);
}
}
WSDL
:
<xs:simpleType name="ClientLevelType">
<xs:restriction base="xs:string">
<xs:enumeration value="DIRECT"/>
<xs:enumeration value="RELATED"/>
</xs:restriction>
</xs:simpleType>
将 String
转换为 enum
可以通过 mapstruct 隐式完成,请参阅文档中的 implicit type conversions。
因此,无需添加 expression
,只需添加 source
,或者当字段名称匹配时,您甚至可以将其省略,然后 MapStruct 将自动检测映射。
我想知道如何使用 mapstruct
更改此 mapping
以避免 nullPointer 异常。
rep.getClientLevelType()
可以为空,也可以是 DIRECT
或
RELATED
。当fromValue
在null
或empty.string
上执行时,出现空指针异常。
我不知道该怎么做,只有在 rep.getClientLevelType()
不为 null 使用 mapstruct
.
@Mapping(target = "clientLevelType", expression = "java(ClientLevelType.fromValue(rep.getClientLevelType()))")
从 wsdl 生成的枚举文档:
@XmlType(name = "ClientLevelType")
@XmlEnum
public enum ClientLevelType {
DIRECT,
RELATED;
public String value() {
return name();
}
public static ClientLevelType fromValue(String v) {
return valueOf(v);
}
}
WSDL
:
<xs:simpleType name="ClientLevelType">
<xs:restriction base="xs:string">
<xs:enumeration value="DIRECT"/>
<xs:enumeration value="RELATED"/>
</xs:restriction>
</xs:simpleType>
将 String
转换为 enum
可以通过 mapstruct 隐式完成,请参阅文档中的 implicit type conversions。
因此,无需添加 expression
,只需添加 source
,或者当字段名称匹配时,您甚至可以将其省略,然后 MapStruct 将自动检测映射。