Как отобразить вложенный список с помощью ModelMapper

#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));  

Надеюсь, это поможет другим людям, сталкивающимся с той же проблемой.