本文目录

一、背景描述

二、问题原因

原因一:映射的字段不一致

原因2:编译问题

三、解决方案


一、背景描述

springboot 2.1.5 + mapstruct 1.3.0.Final + maven管理工具

接手一个项目,根据需求需要对其接口进行修改,对于两个实体类字段赋值,项目中使用 mapstruct 框架自动映射对应字段。对于其中一个实体类中,新增加了两个字段,重启项目使用 swagger 调用测试,发现新增加的字段映射失败,没有把新增的两个字段的值赋值过去,而其他字段则可以正常赋值。

二、问题原因

对于这个现象,有两个原因,以下详细说明一下:

原因一:映射的字段不一致

首先怀疑两个字段需要映射的字段写的不一致,检查完之后发现需要映射的两个字段与被映射的字段一模一样,最终排除掉此原因。

原因2:编译问题

使用 mapstruct 框架,对于需要映射的实体类,会先自动编译好之后存入 target 目录,而 idea 开发工具的重启并没有清空 target 目录下已经编译好的文件,所以导致新增加的两个字段即使重启项目也没有自动映射。

重启后的项目 target 目录下,还是之前编译好的文件,因此新增加的两个字段没有自动映射。

三、解决方案

使用 maven 自带插件,对项目 clean 一下,然后再重新启动,即可解决此问题。

 完结!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐