MapStruct DTO свойство - PullRequest
0 голосов
/ 17 июня 2020

Мне нужно иметь свойство в моем DTO, например idEncrypted, потому что они могут передавать меня только в зашифрованном виде, однако мне нужно сопоставить идентификатор дешифрования, как я нахожу в БД. У меня уже есть метод дешифрования, но я не знаю, как его сопоставить и игнорировать idEncrypted.

@Data
@EqualsAndHashCode(callSuper=false)
@NoArgsConstructor
public class MyDTO {  

    private String idEncrypted;

    ...
    ...

}

Я не знаю, где выполнить преобразование

private Long idDecrypted = Long.parseLong(MyUtils.decrypt(idEncrypted));

1 Ответ

1 голос
/ 24 июня 2020

Вы можете написать свой собственный квалифицированный метод для расшифровки.

например,

@Mapper
public MyMapper {

    @Mapping(target = "id", source = "idEncrypted", qualifiedByName = "decryptId")
    MyEntity map(MyDTO dto);

    @Named("decryptId")
    default Long decryptId(String id) {
        return id != null ? Long.parseLong(MyUtils.decrypt(id)) : null;
    }
}
...