簡體   English   中英

使用自定義映射器方法進行Spring映射

[英]Spring Mapping using a custom mapper method

除了日期成員之外,我有兩個具有所有相同成員的對象。 在Obj1.date中是一個java.sql.Date,而Obj2.date是一個long(epoch)。

我需要編寫一個mapper來將obj1映射到obj2。 這就是我試圖做的事情:

@Named("sqlDateToEpoch")
default long sqlDateToEpoch(Date timestamp) throws ParseException {
    return myUtils.sqlDateToEpoch(timestamp);
}

@Mapping(source = "date", target = "date", qualifiedByName = "sqlDateToEpoch")
Obj2 toObj2(Obj1 source);

List<Obj2> toRecordList(List<Obj1> source);

但mapperImpl只有自己的日期轉換實現:

if (source.getDate() != null) {
    Obj2.setDate(Long.parseLong(source.getDate()));
}

我越來越:

java.lang.NumberFormatException: For input string: "2019-04-02 00:00:00.0"

這種轉換的正確方法是什么?

我認為它不起作用的原因是因為你的source.getDate()返回一個String而不是一個java.sql.Date 這導致MapStruct使用隱式String進行long轉換。

為了解決這個問題,您需要確保source.getDate()返回java.sql.Date或添加一個獲取String並返回Long

暫無
暫無

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

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