Как преобразовать из сущности в dto, используя маппер модели, с преобразованием из строки в UUID - PullRequest
0 голосов
/ 10 мая 2018

Мне нужна помощь, чтобы отобразить Entity в DTO с помощью Model Mapper.Вот мои два pojos

@Data
public class ClientDTO {
    private UUID id;
    @NotNull
    private String name;
    private String description;
    private String contactEmail;
}

@Data
@Entity
public class Client {
    @Id
    private String id;
    @NotNull
    private String name;
    private String description;
    @NotNull
    private String contactEmail;
}

Когда я пытаюсь конвертировать между Client в ClientDTO id отображается как ноль.Я пытался написать PropertyMap и конвертер, но ни один из них не работает для меня.

1 Ответ

0 голосов
/ 11 мая 2018

Я просмотрел документацию и смог найти решение проблемы.Вот сольн.

Инициализация

private PropertyMap<Client, ClientDTO> clientMap;
private ModelMapper clientToClientDtoMapper;

Определение PropertyMap и конвертера

        clientToClientDtoMapper = new ModelMapper();
        Converter<Client, UUID> uuidConverter = new AbstractConverter<Client, UUID>() {
            protected UUID convert(Client source) {
                return UUID.fromString(source.getId());
            }
        };

        clientMap = new PropertyMap<Client, ClientDTO>() {
            protected void configure() {
                try {
                    using(uuidConverter).map(source).setId(null);
                } catch (Exception ex) {
                    System.out.println("Error.");
                }
            }
        };

        clientToClientDtoMapper.addMappings(clientMap);

Помощникспособ конвертировать из сущности в DTO

    private ClientDTO convertToDto(Client client) {

        ClientDTO clientDTO = clientToClientDtoMapper.map(client, ClientDTO.class);
        return clientDTO;
    }
...