java modelMapper: отображение коллекции на объект
После многих испытаний и исследований по этой теме я не могу полностью решить свою проблему. Я использую modelmapper для отображения лица /DTO в приложении Springboot. Я пытаюсь настроить модель-маппер для сопоставления Set с простым DTO-объектом. Я уже создал специальный конвертер, и он работает, как и ожидалось:
Converter<Set<CategoryTl>, CategoryTlDTO> converter = new AbstractCustomConverter<Set<CategoryTl>, CategoryTlDTO>() {
@Override
protected D convert(S source, MappingContext<Set<CategoryTl>, CategoryTlDTO> context) {
HashMap<String, CategoryTlDetailsDTO> map = new HashMap<>();
source.forEach(
categoryTl -> map.put(categoryTl.getCatalogLanguage().getLanguage().getCode(),
new CategoryTlDetailsDTO(categoryTl.getName(), categoryTl.getDescription()))
);
return new CategoryTlDTO(map);
}
};
Теперь моя проблема - применить этот конвертер ко всем "Set => CategoryTlDTO". Вложенный объект или нет. Я пытаюсь создать новую TypeMap, но я не могу сделать это из-за коллекции "Set".
mapper.createTypeMap(Set<CategoryTl>.class (-> not possible), CategoryTlDTO.class).setConverter(converter);
Если я добавляю конвертер прямо в модель, он просто не работает.
mapper.addConverter(converter);
У вас есть подсказка или решение для этого? Может быть, я что-то упустил в отношении TypeToken и TypeMap Inheritance.
С наилучшими пожеланиями,
1 ответ
Я не использовал ModelMapper, но документы предполагают, что вы можете использовать TypeToken
Type setType = new TypeToken<Set<CategoryTl>>() {}.getType();
mapper.createTypeMap(setType, CategoryTlDTO.class).setConverter(converter);