Я использую MapStruct для сопоставления сущностей JPA и POJO DTO.Почему этот сгенерированный класс MapStruct не содержит оператор импорта?
Все мои сущности расширяют общий базовый класс, который имеет поле идентификатора (java.lang.Long
).
У меня есть следующий абстрактный mapper, который позволяет мне отображать отношения из JPA в простое длинное поле (или список) в DTO.
Предприятие или поле List<entity>
могут быть отображены в поле Long
/List<Long>
, например. User.groups
может быть сопоставлен UserDTO.groupIds
:
@Mapper
public abstract class EntityMapper {
public Long entityToLongId(AbstractBaseEntity entity){
return entity.getId();
}
public abstract List<Long> entityCollectionToLongIdList(Collection<? extends AbstractBaseEntity> entities);
}
Однако генерируемый класс реализации не включает оператор импорта для AbstractBaseEntity
класса, хотя он присутствует в абстрактном классе, так что код не компилируется:
package ....;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.annotation.Generated;
import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2016-07-27T12:11:25+0200",
comments = "version: 1.0.0.Final, compiler: javac, environment: Java 1.8.0_66 (Oracle Corporation)"
)
@Component
public class EntityMapperImpl extends EntityMapper {
@Override
public List<Long> entityCollectionToLongIdList(Collection<? extends ch.unine.tango.model.AbstractBaseEntity> entities) {
if (entities == null) {
return null;
}
List<Long> list = new ArrayList<Long>();
for (AbstractBaseEntity abstractBaseEntity : entities) { // compilation error here !
list.add(entityToLongId(abstractBaseEntity));
}
return list;
}
}
Почему? Я делаю это неправильно? Как это исправить?
Я использую MapStruct 1.0.0.Final с Java 8.
EDIT: Если добавить абстрактный метод, который использует AbstractBaseEntity
класс непосредственно, то импорт добавлен:
public abstract AbstractBaseEntityDTO entityToDTO(AbstractBaseEntity abstractBaseEntity);
edit2 : разместил вопрос на Github MapStruct: https://github.com/mapstruct/mapstruct/issues/844