Я использую Mapstruct, и мне нужно обновить существующий компонент, используя @MappingTarget
, но мне нужно применить некоторую сложную логику, чтобы установить правильное поле в цели.
Допустим, у меня есть целевой компонент, которыйвыглядит такУ пользователя есть список учетных записей, и одна из этих учетных записей помечена как избранная.
UserDetails {
String name;
List<Account> accounts;
}
Account {
String id;
boolean favourite;
}
Класс DTO содержит идентификатор учетной записи своей любимой учетной записи.
UserDetialsDTO {
String name;
String favouriteAccountId;
List<String> accountIds;
}
Мне нужноиспользовать некоторую сложную логику для обновления правильного Account
в списке счетов
UserDetails fromDto(UserDetialsDTO dto, @MappingTarget UserDetails userDetails);
Логика поиска и обновления правильного Account
, чтобы сделать его любимым, выглядит примерно так:
userDetails.accounts
.stream()
.forEach(acct -> acct.setFavourite(dto.favouriteAccountId.equals(acct.id))) ;
Как я могу сказать Mapstruct использовать этот пользовательскийлогика при обновлении @MapingTarget
?