Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Erro Caso Mapeamento de Series.stream seja Diferente da sequencia da Classe Serie.

@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @Column(unique = true)
    private String titulo;
    private Integer totalTemporadas;
    private double avaliacao;
    @Enumerated(EnumType.STRING)
    private Categoria genero;
    private String atores;
    private String poster;
    private String sinopse;
 private List<SerieDto> converteDados(List<Serie> series){
        return series
                .stream()
                .map(s -> new SerieDto(s.getId(), s.getTitulo(), s.getTotalTemporadas(), s.getAvaliacao(), s.getGenero(), s.getAtores(),s.getSinopse, s.getPoster))
                .collect(Collectors.toList());
    }

Na Classe Serie o Poster vem primeiro que a Sinopse, quando fui fazer o stream de series eu sem querer coloquei o Sinopse na frente. Acontenceu que na hora de atualizar o site depois de criar o /top5 e atualizar o servidor não apareceu os Poster com as 5 series e sim apenas os TitulosE trocando a ordem do map para a ordem da Classe Serie mostrou corretamente. Infelizmente não consegui demostrar com imagens.

1 resposta
solução!

Olá, Pedro. Tudo bem?

Acho que entendi o que aconteceu com o seu código. Quando você inverteu a ordem dos parâmetros no método map do stream, isso causou um problema na correspondência dos dados entre a classe Serie e o SerieDto. Como você percebeu, a ordem dos parâmetros no map precisa corresponder exatamente à ordem dos atributos no construtor do SerieDto.

No seu caso, o SerieDto estava esperando os atributos na ordem correta, mas o map estava fornecendo-os em uma ordem diferente. Isso fez com que os dados fossem atribuídos incorretamente, resultando em um comportamento inesperado, como a ausência dos posters das séries.

Para corrigir isso, como você mesmo mencionou, basta garantir que a ordem dos parâmetros no map corresponda à ordem dos atributos no construtor do SerieDto. Aqui está um exemplo de como deve ficar:

.map(s -> new SerieDto(
    s.getId(), 
    s.getTitulo(), 
    s.getTotalTemporadas(), 
    s.getAvaliacao(), 
    s.getGenero(), 
    s.getAtores(),
    s.getPoster(),   // Poster antes da Sinopse
    s.getSinopse()
))

Essa correção deve garantir que os dados sejam mapeados corretamente e exibidos como esperado no front-end.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!