2016-02-11 4 views
0

Mapstruct не может найти общий тип атрибута. Давайте возьмем пример, чтобы прояснить, что я пытаюсь сделать.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()); 

Можете ли вы сказать мне, если это ошибка? Если есть проблема? Или я должен делать это по-другому? Thks,

ответ

0

Исправлено в MapStruct 1.1.0.Beta1, выпущенном

0

Можете ли вы построить MapStruct у самого последнего мастера (https://github.com/mapstruct/mapstruct) и посмотреть, не устраняет ли это проблему для вас? На прошлой неделе я исправил связанную с этим ошибку, которая, по моему мнению, была по сути той же проблемой, что и ваша.

Вам просто нужно запустить «mvn clean install» и обратиться к версии зависимости SNAPSHOT от вашего проекта.