[英]How to specify select among ambiguous mapping methods in nested Mapstruct mappers?
[英]How to specify default mapping method for Mapstruct
我有簡單的 object 客戶端
public class Client {
String externalCode;
String name;
String surname;
}
我想將 map 與幾乎相同的 object
public class User {
String internalCode;
String name;
String surname;
}
看,我希望將 externalCode 映射到 internalCode。 我有一個方法可以做到這一點。 我用我的自定義 @CodeMapping 注釋標記了我的方法,並將該注釋放入qualifiedBy 參數。 所以,這是我的映射器。
@Mapper()
ClientMapper {
@CodeMapping
String toInternalCode(String externalCode) {
return externalCode + " internal part";
}
@Mapping(target = "internalCode", source = "externalCode", qualifiedBy = CodeMapping.class)
User toUser(Client client);
}
問題是 name 和 surname 字段也使用 toInternalCode 方法映射。 Mapstruct 看到我定義了一個方法,它將 String 映射到 String 並認為它應該在所有情況下都使用。
有沒有辦法告訴 Mapstruct,如果沒有指定限定符,應該使用直接映射? 或者制作我自己的方法,它接受字符串並返回它並告訴 Mapstruct 它應該默認使用該方法?
很可能所有方法都使用了toInternalCode
,因為@CodeMapping
注釋沒有使用@Qualifier
進行元注釋(來自org.mapstruct.Qualifier
)。
@CodeMapping
應按以下方式定義:
import org.mapstruct.Qualifier;
@Qualifier
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface CodeMapping {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.