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);
Другие вопросы по тегам