0

Mapstruct 找不到属性的泛型类型。让我们举个例子来说明我想要做什么。

考虑以下 dtos :

class ListForm<T> {
 private Collection<T> adds;
 private Collection<T> changes;
 private Collection<T> deletes;
}

class Person {
 private String name;
}

class PersonDto { 
 private String name;
}

我尝试实现以下映射器:

@Mapper
public interface OccupantMapper {
    ListForm<Person> test(ListForm<PersonDto> person);

    Collection<Person> toPersons (Collection<PersonDto> persons);
}

但这是 mapstruct 生成的一部分:

ListForm<Person> listForm= new ListForm<Person>();
if ( occ.getAjouts() != null ) {
        if ( listForm.getAjouts() != null ) {
            // problem here, mapstruct can't find the type of the attribute
            Collection<T> targetCollection = person.getAdds();
            if ( targetCollection != null ) {
                listForm.getAjouts().addAll( targetCollection );
            }
        }
    }

正如您在下面的代码中看到的,mapstruct 找不到目标集合的类型。它不会将 PersonDto 列表转换为 Person 列表。这是 mapstruct 应该生成的内容。

Collection<Occupant> targetCollection = toPersons(person.getAdds());

你能告诉我这是否是一个错误吗?如果有修复?还是我应该做不同的事情?谢谢,

4

2 回答 2

0

您可以自己从最新的 master ( https://github.com/mapstruct/mapstruct )构建 MapStruct ,看看这是否为您解决了问题?我上周修复了一个相关的错误,我认为这与你的问题基本相同。

您只需要运行“mvn clean install”并参考项目中依赖项的 SNAPSHOT 版本。

于 2016-02-11T10:36:20.800 回答
0

它已在 MapStruct 1.1.0.Beta1 发布中得到纠正

于 2016-04-25T21:01:41.067 回答