簡體   English   中英

如何在Mapstruct中將空字符串轉換為Long?

[英]How to Convert empty string to Long in Mapstruct?

將String轉換為Long時,如何配置mapstruct映射器以檢查是否為空,而不僅檢查是否為null。

    if ( entityOld.getNumber() != null ) {
        entityNew.setNumber( Long.parseLong( entityOld.getNumber() ) );
    }

我得到的例外是:

java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0_131]
at java.lang.Long.parseLong(Long.java:601) ~[na:1.8.0_131]

因此,基本上,如果字符串為空,我希望將其視為具有值“ 0”。

添加帶有自定義映射方法的手寫映射器,並通過@Mapper#uses()注冊此映射器:

public class MyStringLongMapper {

    public Long stringToLong(String string) {
        return string != null && !string.isEmpty() ? Long.parseLong( string ) : null;
    }

}

這種手寫方法將優先於從StringLong的內置轉換。

一種解決方案(不太優雅)是為每個字段轉換添加表達式

@Mapping(
    target = "newField",
    expression = "java(Long.parseLong(oldEntity.oldField().isEmpty() ? \"0\" : oldEntity.oldField()))")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM