Mapstruct :为映射集合元素找到的不明确的映射方法

2022-09-02 09:50:49

我有两种将实体映射到域的方法。

RDomain entityToDomain(REntity rEntity)

/*
this method ignores some of the fields in the domain.
*/
RDomain entityToDomainLight(REntity rEntity)

当我尝试为实体列表到域定义映射方法时,我得到了为映射集合元素找到的不明确的映射方法。

List<RDomain> entitiesToDomains(List<REntity> rEntities)

有没有办法定义使用哪个方法映射对象集合


答案 1

正如@Filip建议的那样,最好做这样的事情:

RDomain entityToDomain(REntity rEntity)

@Named(value = "useMe")
RDomain entityToDomainLight(REntity rEntity)

@IterableMapping(qualifiedByName = "useMe")
List<RDomain> entitiesToDomains(List<REntity> rEntities)

答案 2

据我所知,Mapstruct,没有wo可以告诉映射器

List<RDomain> entitiesToDomains(List<REntity> rEntities)

它应该使用哪种映射到方法。但是,您可以在映射器接口上实现为 Java 8 默认方法。entitiesToDomains

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;

}

推荐