2016-07-27 13 views
0

私はJPAエンティティとPOJO DTO間をマップするためにMapStructを使用しています。このMapStruct生成クラスにimport文が含まれていないのはなぜですか?

私のすべてのエンティティは、IDフィールド(java.lang.Long)を持つ共通基本クラスを拡張しています。

私は、JPAの関係からDTOの単純なロングフィールド(またはリスト)にマップすることができる次の抽象マッパーを持っています。

エンティティまたはList<entity>フィールドは、例えば、Long/List<Long>フィールドにマッピングすることができますUser.groupsUserDTO.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; 
    } 
} 

なぜですか?私はそれを間違っているのですか?これを修正するには?

私は、Java 8

EDITでMapStruct 1.0.0.Finalを使用しています:私は直接AbstractBaseEntityクラスを使用して抽象メソッドを追加する場合は、インポートが追加されます。

public abstract AbstractBaseEntityDTO entityToDTO(AbstractBaseEntity abstractBaseEntity); 

EDIT2を:MapStructのGithubに問題を掲載しました:https://github.com/mapstruct/mapstruct/issues/844

答えて

関連する問題