2017-01-04 4 views
0

Mapstruct бросает мне следующую ошибку на этапе компиляции:MapStruct не отображаются некоторые атрибуты

ConfigsMapperImpl не является абстрактным и не отменяет абстрактные метод toConfigs (ConfigsDTO)

В то же время MapStruct хорошо сгенерирует код для всех других методов.

Я полагаю, что это происходит потому, что Config объект имеет больше полей, чем ConfigsDTO.

@Mapper 
public interface ConfigsMapper { 

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

    ConfigsDTO ConfigsToConfigsDTO(Configs configs); 

    List<ConfigsDTO> toConfigsDTOs(List<Configs> configs); 

    @InheritInverseConfiguration 
    Configs toConfigs(ConfigsDTO configsDTO); 
} 
+0

почему downvote? Вам нужна подробная информация? –

ответ

2

В сгенерированной реализации методы все считываемые свойства от типа источника (например, конфига) будут скопированы в соответствующее свойство в целевом типе (например, ConfigsDTO). Если свойство имеет другое имя в целевом объекте, его имя можно указать с помощью аннотации @Mapping.

Аннотации @Mappings определяют, какие атрибуты из источника будут переданы определенному атрибуту в цель. Аннотации определяют, что должно выполняться обратное сопоставление @InheritInverseConfiguration.

Например:

@Mapper 
public interface ConfigsMapper { 
    ConfigsMapper INSTANCE = Mappers.getMapper(ConfigsMapper.class); 

    @Mappings({ 
     @Mapping(source = "configs1", target = "configsDTO1"), 
     @Mapping(source = "configs2", target = "configsDTO2"), 
     @Mapping(target = "somethingElse", constant="somethingElseOnDTO") 
    }) 
    ConfigsDTO ConfigsToConfigsDTO(Configs configs); 

    @InheritInverseConfiguration 
    Configs toConfigs(ConfigsDTO configsDTO); 
} 
Смежные вопросы