#java #modelmapper
Вопрос:
Я столкнулся с проблемой, я использую ModelMapper для сопоставления объектов, но я не могу решить эту проблему с помощью пользовательских сопоставлений.
Вот моя исходная модель:
public class UserSource { private Listlt;IdentitySourcegt; identities; } public class IdentitySource { private String firstName; private String lastName; }
И вот моя модель назначения:
public class UserDestination { private Listlt;NestedIdentityDestinationgt; nestedIdentities; } public class NestedIdentityDestination { private IdentityDestination identity; } public class IdentityDestination { private String firstName; private String lastName; }
Кто-нибудь знает, как этого добиться с помощью ModelMapper, пожалуйста?
Комментарии:
1.
Identity
=IdentitySource
?2. Верно, я отредактировал свой вопрос и ответ, спасибо, что указали на это.
Ответ №1:
Проведя еще несколько исследований и экспериментов, я понял это. Мне нужно было использовать сочетание конвертера и сопоставления типов.
Вот мое решение:
Converterlt;Listlt;IdentitySourcegt;, Listlt;NestedIdentityDestinationgt;gt; convertIdentities = new AbstractConverterlt;gt;() { protected Listlt;NestedIdentityDestinationgt; convert(Listlt;IdentitySourcegt; source) { return source.stream().map(identity -gt; { NestedIdentityDestination nestedIdentity = new NestedIdentityDestination(); nestedIdentity.setIdentity(modelMapper.map(identity, IdentityDestination.class)); return nestedIdentity; }).collect(Collectors.toList()); } }; modelMapper.typeMap(UserSource.class, UserDestination.class) .addMappings(mapper -gt; mapper.using(convertIdentities) .map(UserSource::getIdentities, UserDestination::setNestedIdentities));
Надеюсь, это поможет другим людям, сталкивающимся с той же проблемой.