解决mapstuct中date和LocalDateTime互转时区错误的问题
@Mapping(target = "taskCreateTime", expression = "java(LocalDateTime.ofInstant(
history.getTaskCreateTime().toInstant(), ZoneId.of( \"Asia/Shanghai\" ) ))")
ApprovalHistory mapApprovalHistory(ProjectApprovalHistory history);
expression表示你指定的属性(target)即将被设置的值,目前Java是唯一支持的表达式语言,
Java()中是合法的Java表达式语句,可以执行之后计算出一个值,赋值给target,
例如上面的语句,会让mapstruct生成如下代码
${MappingResult}.taskCreateTime( LocalDateTime.ofInstant( history.getTaskCreateTime().toInstant(),
ZoneId.of( "Asia/Shanghai" ) ) );
就是把你要映射的对象的taskCreateTime设置为你提供的表达式。通过你提供的表达式自定义映射的过程
网友评论