问题描述:
在用mapstruct的mapper 做对象转换的时候,输入的参数是有值的,但是返回的字段都是null,如下
@Override
public TbAnnouncementVO convert(TbAnnouncementEntity entity) {
if ( entity == null ) {
return null;
}
TbAnnouncementVO tbAnnouncementVO = new TbAnnouncementVO();
return tbAnnouncementVO;
}
问题原因:
出现这个问题的原因是因为,lombok 依赖和该依赖顺序不一样。需要lombok 依赖放在mapstruct 上面。如果lombok 依赖放在mapstruct 依赖下面就会出现这个问题。
下面代码为错误代码。
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
问题解决:
将lombok 依赖放在mapstruct 依赖上面
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.0.Final</version>
</dependency>