Java MapStruct-如何指定属性的泛型类型?

Java MapStruct-如何指定属性的泛型类型?,java,mapstruct,Java,Mapstruct,Mapstruct找不到属性的泛型类型。让我们举个例子来说明我想做什么 考虑到以下DTO: class ListForm<T> { private Collection<T> adds; private Collection<T> changes; private Collection<T> deletes; } class Person { private String name; } class PersonDto { priv

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

考虑到以下DTO:

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;
}
类列表表单{
私人收藏增加;
私人收藏的变化;
私人收藏删除;
}
班主任{
私有字符串名称;
}
类PersonDto{
私有字符串名称;
}
我尝试实现以下映射器:

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

    Collection<Person> toPersons (Collection<PersonDto> persons);
}
@Mapper
公共接口职业映射器{
列表形式测试(列表形式人员);
收款人(收款人);
}
但以下是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 );
            }
        }
    }
ListForm ListForm=new ListForm();
if(occ.getAjouts()!=null){
if(listForm.getAjouts()!=null){
//这里的问题是,mapstruct找不到属性的类型
Collection targetCollection=person.getAdds();
if(targetCollection!=null){
listForm.getAjouts().addAll(targetCollection);
}
}
}
正如您在下面的代码中看到的,mapstruct找不到目标集合的类型。而且它不需要将PersonDto列表转换为Person列表。下面是mapstruct应该生成的内容

Collection<Occupant> targetCollection = toPersons(person.getAdds());
Collection targetCollection=toPersons(person.getAdds());
你能告诉我是不是虫子吗?如果有解决办法?还是我应该换一种方式?
Thks,

您是否可以自己从最新的master()构建MapStruct,并查看这是否为您解决了问题?我上周修复了一个相关的bug,我认为它与您的bug基本相同


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

已在已发布的MapStruct 1.1.0.Beta1中更正