首页 > 解决方案 > org.mapstruct 不适用于基类

问题描述

我有2节课。我的基类:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class BaseRequest {

   @NotNull
   @JsonProperty("dateTransaction")
   private String dateTransaction;

   @NotNull
   @JsonProperty("hourTransaction")
   private String hourTransaction;

}

还有我的另一堂课。这个类扩展了 BaseRequest 类。

public class AddClass extends BaseRequest {

   @Setter
   @Getter
   private String additionalData60;

}

当我尝试创建一个映射器将我的 AddClass 转换为 OtherClass 时:

@Component
@Mapper(componentModel = "spring", uses = {})
public interface OtherMapper{

   @Mappings({
        @Mapping(source = "hourTransaction", target = "timeTransaction"),
        @Mapping(source = "dateTransaction", target = "dateTransaction"),
        @Mapping(source = "additionalData60", target = "additionalData60"),
   })
   OtherClass toOtherClass(AddClass addClass);

}

当我运行我的构建时,我收到了这个错误:

错误:(22,13)java:源参数中不存在名为“dateTransaction”的属性。您指的是“空”吗?

标签: javaspringspring-bootlombokmapstruct

解决方案


MapStruct 在 Lombok 上没有问题。

但是,如果您已根据Lombok 更新日志升级到 Lombok 1.18.16,那么您需要添加

lombok-mapstruct-binding

在 Gradle 中:

annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.1.0"
<path>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-mapstruct-binding</artifactId>
    <version>0.1.0</version>
</path>

推荐阅读