属性 名称以 "set" 开头时出现未映射目标 属性 警告

Unmapped target property warning when property name starts with "set"

我正在尝试使用 MapStruct 实现实体和 DTO 之间的映射。要映射的属性之一是 "settlementDate"。它在 DTO class 中具有相同的名称并且映射有效,但我在编译期间收到以下警告:

/path/to/project/SomeDataMapper.java:15: warning: Unmapped target property: "tlementDate".
    SomeData toEntity(SomeDataDTO someDataDTO);

有没有办法让 MapStruct 处理这样一个奇怪的名字 属性 而没有警告?

我尝试使用 @Mapping 注释来明确指定名称,但这没有帮助:

@Mapping(target = "settlementDate", source = "settlementDate")
SomeData toEntity(SomeDataDTO someDataDTO);

您的问题来自名称 "settlementDate",显然从一代开始它就被视为 setter 而不是变量。 所以我建议你:

 @Mapping(target="settlementDate",source="settlementDate", qualifiedByName="methodName")
 SomeData toEntity(SomeDataDTO someDataDTO);

 @Named("methodName")
 default ... methodName2(... settlementDate){
     //your transformation to get settlementDate of SomeData from settlementDate from SomDataDTO
 }

我还没有尝试使用以 "set" 开头的名称,否则它可以工作

我会说这是一个错误,这个名字并不奇怪。您能否在错误跟踪器中创建一个问题(如果您还没有)

你暂时可以尝试和"use"错误的属性映射。类似于:

@Mapping(target = "tlementDate", source = "settlementDate")
SomeData toEntity(SomeDataDTO someDataDTO)