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.groups
은 UserDTO.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