Vou mostrar o código aqui. Quando clico em um filme gera um valor "undefined" em todos os campos.
No inspecionar do navegador mostra isso: "getDados.js:5
GET http://localhost:8080/series/undefined 400 (Bad Request)
getDados @ getDados.js:5 carregarInfoSerie @ series.js:72 (anônimo) @ series.js:95 undefined:1
GET http://127.0.0.1:5501/undefined 404 (Not Found)
[NOVO] Explique os erros do Console usando o Copilot no Edge: clique em
para explicar um erro.
Saiba mais
Não mostrar novamente
getDados.js:5
GET http://localhost:8080/series/undefined/temporadas/todas 404 (Not Found)
getDados @ getDados.js:5 carregarTemporadas @ series.js:11 (anônimo) @ series.js:96 series.js:34 Erro ao obter temporadas: TypeError: data.map is not a function at series.js:13:55"
Os códigos das classes estão assim: `package br.com.alura.screenmatch.service;
import br.com.alura.screenmatch.dto.SerieDTO; import br.com.alura.screenmatch.model.Serie; import br.com.alura.screenmatch.repository.SerieRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
import java.util.List; import java.util.Optional; import java.util.stream.Collectors;
@Service public class SerieService {
@Autowired
private SerieRepository repositorio;
public List<SerieDTO> obterTodasAsSeries() {
return converteDados(repositorio.findAll());
}
public List<SerieDTO> obterTop5Series() {
return converteDados(repositorio.findTop5ByOrderByAvaliacaoDesc());
}
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.getPoster(), s.getSinopse()))
.collect(Collectors.toList());
}
public List<SerieDTO> obterLancamentos() {
return converteDados(repositorio.findTop5ByOrderByEpisodiosDataLancamentoDesc());
}
public SerieDTO obterPorId(Long id) {
Optional<Serie> serie = repositorio.findById(id);
if(serie.isPresent()) {
Serie s = serie.get();
return new SerieDTO(s.getId(), s.getTitulo(), s.getTotalTemporadas(), s.getAvaliacao(), s.getGenero(), s.getAtores(), s.getPoster(), s.getSinopse());
}
return null;
}
} `
package br.com.alura.screenmatch.repository;
import br.com.alura.screenmatch.model.Categoria;
import br.com.alura.screenmatch.model.Episodio;
import br.com.alura.screenmatch.model.Serie;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Optional;
public interface SerieRepository extends JpaRepository<Serie, Long> {
Optional<Serie> findByTituloContainingIgnoreCase(String nomeSerie);
List<Serie> findByAtoresContainingIgnoreCaseAndAvaliacaoGreaterThanEqual(String nomeAtor, Double avaliacao);
List<Serie> findTop5ByOrderByAvaliacaoDesc();
List<Serie> findByGenero(Categoria categoria);
List<Serie> findByTotalTemporadasLessThanEqualAndAvaliacaoGreaterThanEqual(int totalTemporadas, double avaliacao);
@Query("select s from Serie s WHERE s.totalTemporadas <= :totalTemporadas AND s.avaliacao >= :avaliacao")
List<Serie> seriesPorTemporadaEAvaliacao(int totalTemporadas, double avaliacao);
@Query("select e from Serie s JOIN s.episodios e WHERE e.titulo ILIKE %:trechoEpisodio%")
List<Episodio> episodiosPorTrecho(String trechoEpisodio);
@Query("select e from Serie s JOIN s.episodios e WHERE s = :serie ORDER BY e.avaliacao DESC LIMIT 5")
List<Episodio> topEpisodiosPorSerie(Serie serie);
@Query("select e from Serie s JOIN s.episodios e WHERE s = :serie AND YEAR(e.dataLancamento) >= :anoLancamento")
List<Episodio> episodiosPorSerieEAno(Serie serie, int anoLancamento);
List<Serie> findTop5ByOrderByEpisodiosDataLancamentoDesc();
}