[英]Override a method in Mapper class or customer mapper or attribute mapping- Spring Boot
[英]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.