猿问

Mapstruct 可选映射

我想知道我怎样才能改变这种mapping使用mapstruct,以避免空指针异常。 rep.getClientLevelType()可以为空,也可以为DIRECT或 RELATED。当fromValue上执行null或empty.string空指针异常发生。我不知道该怎么做,只有在rep.getClientLevelType()使用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>


阿晨1998
浏览 144回答 1
1回答

一只甜甜圈

将 a 转换String为 anenum可以通过 mapstruct隐式完成,请参阅文档中的隐式类型转换。因此,当字段的名称匹配时,您甚至可以将它们排除在外,而不是expression简单地添加source或添加,然后 MapStruct 将自动检测映射。
随时随地看视频慕课网APP

相关分类

Java
我要回答