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>
我有 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>