2016-07-27 3 views
0

MapStruct를 사용하여 JPA 엔티티와 POJO DTO간에 매핑합니다.이 MapStruct 생성 클래스에 import 문이 포함되어 있지 않은 이유는 무엇입니까?

내 모든 엔티티는 ID 필드 (java.lang.Long)가있는 공통 기본 클래스를 확장합니다.

JPA의 관계에서 DTO의 간단한 Long 필드 (또는 List)로 매핑 할 수있는 다음 추상 매퍼가 있습니다.

엔티티 또는 List<entity> 필드는 Long/List<Long> 필드에 매핑 될 수 있습니다. 이 추상 클래스에 존재하지만

@Mapper 
public abstract class EntityMapper { 

    public Long entityToLongId(AbstractBaseEntity entity){ 
     return entity.getId(); 
    } 

    public abstract List<Long> entityCollectionToLongIdList(Collection<? extends AbstractBaseEntity> entities); 
} 

생성 된 구현 클래스의 AbstractBaseEntity 클래스에 대한 import 문을 포함하지 않는 그러나, 그래서 코드는 컴파일되지 않습니다 : User.groupsUserDTO.groupIds에 매핑 할 수

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; 
    } 
} 

왜 그럴까요? 내가 잘못하고 있니? 이 문제를 해결하는 방법?

나는 자바 8.

편집과 MapStruct 1.0.0.Final을 사용하고 있습니다 : 내가 직접 AbstractBaseEntity 클래스를 사용하는 추상적 인 방법을 추가 한 다음 가져 오기가 추가됩니다

public abstract AbstractBaseEntityDTO entityToDTO(AbstractBaseEntity abstractBaseEntity); 

EDIT2을 : MapStruct의 Github에 게시 됨 : https://github.com/mapstruct/mapstruct/issues/844

답변