首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mapstruct LocalDateTime到Instant

Mapstruct LocalDateTime到Instant
EN

Stack Overflow用户
提问于 2017-12-20 07:52:42
回答 1查看 23.4K关注 0票数 7

我是新来的马普斯特。我有一个模型对象,其中包括LocalDateTime类型字段。DTO包括Instant类型字段。我想将LocalDateTime类型字段映射到Instant类型字段。我有传入请求的TimeZone实例。

手动设置这样的字段;

代码语言:javascript
复制
set( LocalDateTime.ofInstant(x.getStartDate(), timeZone.toZoneId()) )

如何使用Mapstruct映射这些字段?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-22 22:43:00

你有两个选择来实现你想要的目标。

第一种选择:

@Context属性使用1.2.0中的新timeZone注释,并定义自己的方法来执行映射。类似于:

代码语言:javascript
复制
public interface MyMapper {

    @Mapping(target = "start", source = "startDate")
    Target map(Source source, @Context TimeZone timeZone);

    default LocalDateTime fromInstant(Instant instant, @Context TimeZone timeZone) {
        return instant == null ? null : LocalDateTime.ofInstant(instant, timeZone.toZoneId());
    }
}

然后,MapStruct将使用提供的方法来执行InstantLocalDateTime之间的映射。

第二种选择:

代码语言:javascript
复制
public interface MyMapper {

    @Mapping(target = "start", expression = "java(LocalDateTime.ofInstant(source.getStartDate(), timezone.toZoneId()))")
    Target map(Source source, TimeZone timeZone);
}

我个人的选择是使用第一个

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47901178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档