Mapstruct:如何限定 IterableMapping 函数
Mapstruct: how to qualify an IterableMapping function
我在实体和 DTO 之间有一个映射器:
@Mapper(componentModel="cdi", uses = { RegionMapper.class })
public interface ClusterMapper {
@Mapping(target="regions", ignore=true)
ClusterDto map(Cluster entity);
ClusterDto mapWithRegions(Cluster entity);
}
第一个映射函数是 "simple mapping" 用于列出实体,第二个用于详细视图。我想要 List 等效项,所以我有一个注释:
@Qualifier
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Simple {
}
并将此限定符添加到第一个映射函数和列表函数中:
@Mapper(componentModel="cdi", uses={RegionMapper.class})
public interface ClusterMapper {
@Simple // <====
@Mapping(target="regions", ignore=true)
ClusterDto map(Cluster entity);
ClusterDto mapWithRegions(Cluster entity);
@IterableMapping(qualifiedBy = Simple.class) // <====
List<ClusterDto> map(List<Cluster> entities);
}
但即使使用了 @Simple
注释,我仍然收到一条错误消息:
Ambiguous mapping methods found for mapping collection element to...
如何使 List map(List)
函数 "choose" 成为第一个映射函数?
好的,我犯了一个错误:对于我的 @Simple
注释,我导入了 javax.inject.Qualifier
而不是 org.mapstruct.Qualifier
。
我在实体和 DTO 之间有一个映射器:
@Mapper(componentModel="cdi", uses = { RegionMapper.class })
public interface ClusterMapper {
@Mapping(target="regions", ignore=true)
ClusterDto map(Cluster entity);
ClusterDto mapWithRegions(Cluster entity);
}
第一个映射函数是 "simple mapping" 用于列出实体,第二个用于详细视图。我想要 List 等效项,所以我有一个注释:
@Qualifier
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Simple {
}
并将此限定符添加到第一个映射函数和列表函数中:
@Mapper(componentModel="cdi", uses={RegionMapper.class})
public interface ClusterMapper {
@Simple // <====
@Mapping(target="regions", ignore=true)
ClusterDto map(Cluster entity);
ClusterDto mapWithRegions(Cluster entity);
@IterableMapping(qualifiedBy = Simple.class) // <====
List<ClusterDto> map(List<Cluster> entities);
}
但即使使用了 @Simple
注释,我仍然收到一条错误消息:
Ambiguous mapping methods found for mapping collection element to...
如何使 List map(List)
函数 "choose" 成为第一个映射函数?
好的,我犯了一个错误:对于我的 @Simple
注释,我导入了 javax.inject.Qualifier
而不是 org.mapstruct.Qualifier
。