How to map the source object of type String to target UUID in MapStruct?

Viewed 35

Here is a code snippet:

Source:

public class BuyerInfo {
   String membershipID;
}

Target:

public class BuyerInfo {
   UUID membershipID;
}

Error in console:

Can't map property "String buyerInfo.primaryMembershipID" to "UUID buyerInfo.id". Consider to declare/implement a mapping method: "UUID map(String value)".

1 Answers

I tried this and it worked for me.

@Mapper(componentModel = "spring")
public interface SourceToTargetMapper {

    SourceToTargetMapper INSTANCE = Mappers.getMapper( SourceToTargetMapper.class );

    @Mapping(target="buyerInfo.id", expression = "java(mapToBuyerInfoId(buyerMetaData))")
    Order sourceOrderList(SourceOrder.Order sourceOrder);

    default UUID mapToBuyerInfoId(BuyerMetaData buyerInfo){
        return UUID.fromString(buyerInfo.getPrimaryMembershipID());
    }
}
Related