1
resposta

Erro - DTO

Quando eu implementei a classe TopitoDTO, ocorre o seguinte erro:

No serializer found for class br.com.alura.forum.controller.dto.TopicoDto and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0])

Poderiam me explicar o que está acontecendo???

package br.com.alura.forum.controller.dto;

import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors;

import br.com.alura.forum.modelo.Topico;

public class TopicoDto {

private Long id; 
private String titulo; 
private String mensagem; 
private LocalDateTime dataCriacao; 

public TopicoDto(Topico topico) { 
    this.id = topico.getId(); 
    this.titulo = topico.getTitulo();
    this.mensagem = topico.getMensagem();
    this.dataCriacao = topico.getDataCriacao();
}

public static List<TopicoDto> converter(List<Topico> topicos) {
    return topicos.stream().map(TopicoDto::new).collect(Collectors.toList());
}
1 resposta

Faltou criar os gets dos atributos da classe TopicoDto. O Jackson (biblioteca responsável em serializar o objeto no formato Json) utiliza por padrão os gets para gerar o Json.

Agora caso vc não queira criar gets vc pode anotar seu Dto com @JsonAutoDetect(fieldVisibility = Visibility.ANY) que é pra funcionar também.