2
respostas

[Dúvida] Porque algumas series a opção Escolher temporada aparece as temporadas e outras não?

EpisodioDTO.java

package br.com.alura.screenmatch.dto;

public record EpisodioDTO(Integer temporada, Integer numeroEpisodio, String titulo) {
}

SerieRepository.java

   @Query("SELECT e FROM Serie s JOIN s.episodios e WHERE s.id = :id AND e.temporada = :numero")
    List<Episodio> obterEpisodiosPorTemporada(Long id, Long numero);

SerieController.java

 @GetMapping("/{id}/temporadas/{numero}")
    public List<EpisodioDTO> obterTemporadasPorNumero(
            @PathVariable Long id,
            @PathVariable Long numero){
        return servico.obterTodasTemporadasPorNumero(id, numero);
    }

Já reiniciei a integração, o banco de dados, mas não sei dizer o por que desse comportamento. Exemplo na imagem: GOT não carrega as temporadas, friends sim.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Bom dia! Provavelmente é por um destes motivos:

A série (ex: GOT) não tem episódios cadastrados no banco ou os episódios estão com a temporada nula ou errada.

O tipo do parâmetro numero na query está como Long, mas deveria ser Integer, pois o campo temporada é Integer.

Altere isso no SerieRepository e no controller:

List<Episodio> obterEpisodiosPorTemporada(Long id, Integer numero);

Os episódios não estão corretamente ligados à série no banco (problema no relacionamento entre Serie e Episodio).

Eu acho que é um problema com o banco de dados. Mas não estou conseguindo resolver. Quando a aplicação estava no 'ScreenmatchApplicationSemWeb.java' o banco de dados funciona e atualizava. Agora com o 'ScreenmatchApplication' não. Mesmo com o resources > application.properties > spring.jpa.hibernate.ddl-auto=update.

Fiz as alterações acima indicada mas sem sucesso. E no banco de dados o retorno é esse: O que e como corrigir para consertar o problema?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade