Mapstruct:为映射集合元素找到的模糊映射方法

时间:2018-03-15 15:17:08

标签: java mapstruct

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

RDomain entityToDomain(REntity rEntity)

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

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

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

有没有办法定义用于映射对象集合的方法

2 个答案:

答案 0 :(得分:2)

按照@Filip的建议,最好执行以下操作:

RDomain entityToDomain(REntity rEntity)

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

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

答案 1 :(得分:0)

据我了解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;

}