Mapstruct:为映射集合元素找到了不明确的映射方法
Mapstruct : Ambiguous mapping methods found for mapping collection element
我有两种将实体映射到域的方法。
RDomain entityToDomain(REntity rEntity)
/*
this method ignores some of the fields in the domain.
*/
RDomain entityToDomainLight(REntity rEntity)
当我尝试定义实体列表到域的映射方法时,我发现 映射集合 元素的映射方法不明确。
List<RDomain> entitiesToDomains(List<REntity> rEntities)
有没有办法定义用于映射对象集合的方法
据我对 Mapstruct 的了解,没有什么可以告诉映射器的
List<RDomain> entitiesToDomains(List<REntity> rEntities)
它应该使用您的哪种映射方法。但是您可以在映射器接口上将 entitiesToDomains
作为 Java 8 默认方法实现。
default List<RDomain> entitiesToDomains(List<REntity> rEntities) {
List<RDomain> domains = new ArrayList<>();
for(REntity r : rEntities) {
//delegate to your dedicated mapper
domains.add(entityToDomainLight(r));
}
return domains;
}
正如@Filip 所建议的那样,最好这样做:
RDomain entityToDomain(REntity rEntity)
@Named(value = "useMe")
RDomain entityToDomainLight(REntity rEntity)
@IterableMapping(qualifiedByName = "useMe")
List<RDomain> entitiesToDomains(List<REntity> rEntities)
我有两种将实体映射到域的方法。
RDomain entityToDomain(REntity rEntity)
/*
this method ignores some of the fields in the domain.
*/
RDomain entityToDomainLight(REntity rEntity)
当我尝试定义实体列表到域的映射方法时,我发现 映射集合 元素的映射方法不明确。
List<RDomain> entitiesToDomains(List<REntity> rEntities)
有没有办法定义用于映射对象集合的方法
据我对 Mapstruct 的了解,没有什么可以告诉映射器的
List<RDomain> entitiesToDomains(List<REntity> rEntities)
它应该使用您的哪种映射方法。但是您可以在映射器接口上将 entitiesToDomains
作为 Java 8 默认方法实现。
default List<RDomain> entitiesToDomains(List<REntity> rEntities) {
List<RDomain> domains = new ArrayList<>();
for(REntity r : rEntities) {
//delegate to your dedicated mapper
domains.add(entityToDomainLight(r));
}
return domains;
}
正如@Filip 所建议的那样,最好这样做:
RDomain entityToDomain(REntity rEntity)
@Named(value = "useMe")
RDomain entityToDomainLight(REntity rEntity)
@IterableMapping(qualifiedByName = "useMe")
List<RDomain> entitiesToDomains(List<REntity> rEntities)