问题描述
在自测一个功能时,从数据库中查询数据正常,但是在响应到前端数据为空。
问题排查
maven的版本是3.6.3
mapstruct的版本是1.4.2.Final
引用lombok的方式是
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
此时默认引用的lombok版本是1.18.16,如下图所示。
此时造成的问题是,MapStruct注解处理器插件生成一个实现类时,没有Entity转DTO的具体的实现,如下所示。
问题解决
思考是不是因为mapstruct的版本或者pom文件的编译造成的问题,百度很久,尝试很多方式不能解决问题。
后来无意间看到有博主说mapstruct 、maven、Lombok的关系时,赶紧查看之前项目lombok的版本,发现是1.18.12版本。查看本项目的lombok版本是1.18.16(如上图),尝试将本项目的lombok版本1.18.12,MapStruct注解处理器插件生成一个实现类时,生成了Entity转DTO的具体的实现。如下图所示
一切是那么美好。
总结
1、对mapstruct使用不熟;
2、引用的依赖包时,要指定版本。
参考
MapStruct - Lombok & Maven 版本关系