2017-09-12 15 views
-1

戻り型org.springframework.data.domain.Pageに実装タイプが登録されていません。Mapstruct戻り型

@Mapper(componentModel = "spring", uses = { OptionalMapper.class, VehicleImageMapper.class, GearShiftMapper.class, 
    FuelMapper.class, ColorMapper.class, ModelMapper.class, UserMapper.class }) 
public interface VehicleMapper { 

    VehicleMapper INSTANCE = Mappers.getMapper(VehicleMapper.class); 

    VehicleDTO vehicletoVehicleDTO(Vehicle vehicle); 

    Page<VehicleDTO> vehicletoVehicleDTO(Page<Vehicle> vehicles); 

    Iterable<VehicleDTO> vehicletoVehicleDTO(Iterable<Vehicle> vehicles); 

    Vehicle vehicleDTOtoVehicle(VehicleDTO vehicleDTO); 
} 

マイサービス...

@Override 
public Page<VehicleDTO> searchVehiclesByPage(Pageable page) { 
    Page<VehicleDTO> vehicles = vehicleMapper.vehicletoPageVehicleDTO(vehicleRepository.findAllByEnabled(page)); 
    return vehicles; 
} 

は、誰かがplzは私を助けることができますか?

答えて

0

これはMapStructの既知の問題です。 mapstruct#607をご覧ください。

これには回避策があります(バグのためだと思います)。チェックは、最初のソースパラメーターと結果タイプの間でのみ行われます。 @Mappingと複数のパラメータを使用できるようにするには、ラッパータイプが必要です。これは次のように動作することを意味します

public class Wrapper<T> { 
    private T value; 
    //getters and setters 
} 

public interface MyMapper { 

    @Mapping(source = "customers", target = "value") 
    Wrapper<PageDTO<VehicleDTO>> map(Integer dummy, Page<Vehicle> vehicles); 

} 

チェックが整数とラッパーの間で行われることになり、それが許可されます。あなたのような何かを行うことができますダミーを公開しないために:

public abstract class MyMapper { 

    public PageDTO<VehicleDTO> map(Page<Vehicle> vehicles) { 
     return map(1, vehicles).getValue(); //Maybe do null checks as well 
    } 

    @Mapping(source = "customers", target = "value") 
    protected Wrapper<PageDTO<VehicleDTO>> map(Integer dummy, Page<Vehicle> vehicles); 

} 

これもMapStructの仕事を作るための回避策であり、それは機能ではありません。公式のサポートがいつ来るかを知るために、リンクされた問題に従ってください。