org.mapstruct 不使用底座 class

org.mapstruct don't work with a base class

我有 2 个 class。我的基地 class:

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

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

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

}

还有我的另一个 class。 class 扩展了 BaseRequest class.

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);

}

当我 运行 我的构建时收到此错误:

Error:(22,13) java: No property named "dateTransaction" exists in source parameter(s). Did you mean "null"?

MapStruct 使用 Lombok 时没有问题。

但是,如果您已经按照 Lombok Changelog 升级到 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>