繁体   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