![](/img/trans.png)
[英]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.