我试着把一个复杂的物体转换成另一个复杂的物体。所有对象都有子对象。在这些对象中,我有不同格式的日期。。。
看看这个:
ObjectA : {
Long dateA,
CustomObject: {
Long dateB
List<CustomObject2> myObject
}
}
CustomObject2 : {
Long dateC
}
然后是我的目标对象:
ObjectB : {
LocalDateTime dateA,
CustomObject: {
LocalDateTime dateB
List<CustomObject3> myObject
}
}
CustomObject3 : {
LocalDateTime dateC
}
我已经写了mapstruct转换器来转换 ObjectA
至 ObjectB
:
@Mapping( target = "dateA", qualifiedByName = "toLocalDateTime")
ObjectB convertROToBO(ObjectA in);
@Named("toLocalDateTime")
static LocalDateTime toLocalDate(final Long dateMilliseconds) {
if (dateMilliseconds == null) {
return null;
}
return Instant.ofEpochMilli(dateMilliseconds).atZone(ZoneId.systemDefault()).toLocalDateTime();
}
所以,当我转换我的 ObjectA
至 ObjectB
,只有我的 dateA
已转换(我的 dateB
@ dateC
不转换)。
如何使用map struct递归地将所有long转换为localdatetime?有没有可能用单转换器和单转换方法来实现这一点
谢谢:)
1条答案
按热度按时间2vuwiymt1#
你为什么
toLocalDate
是因为您正在使用@Named
,当您限定您的方法时,它们只能与qualifiedByName
以及qualifiedBy
.如果你移除
@Named
从toLocalDate
然后是Long
以及LocalDateTime
我会用那种方法。