Olá! Estou codando o case 10 para buscar e listar os 5 eps mais avaliados de cada série, porém, ele não compila. Abaixo, coloquei apenas os trechos referentes a essa opção do menu construída.
Episodio.java
package br.com.alura.screenMatch.model;
import...
@Entity
@Table(name = "episodios")
public class Episodio {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Integer temporada;
private String titulo;
private Integer numeroEp;
private Double avaliacaoEp;
private LocalDate dataLancamento;
private String duracaoEP;
private String diretorEp;
private String generoEp;
@ManyToOne
private Serie serie;
}
SerieRepository.java
package br.com.alura.screenMatch.repository;
import...
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> seriePorTemporadaEAvaliacao(int totalTemporadas, double avaliacao);
@Query("SELECT e FROM Serie s JOIN s.episodios e WHERE e.titulo ILIKE %:nomeTrechoEp%")
List<Episodio> episodiosPorTrecho(String nomeTrechoEp);
@Query("SELECT s FROM Serie s JOIN s.episodios e WHERE s = :serie ORDER BY e.avaliacaoEp DESC LIMIT 5")
List<Episodio> topEpisodiosPorSerie(Serie serie);
}
Principal.java
package br.com.alura.screenMatch.principal;
import...
public class Principal {
private void topEpisodiosPorSerie() {
buscarSeriePorTitulo();
if (serieBusca.isPresent()) {
Serie serie = serieBusca.get();
List<Episodio> todosEpisodios = repositorio.topEpisodiosPorSerie(serie);
todosEpisodios.forEach(e ->
System.out.printf("Série: %s - Temporada %s - Episódio %s - Avaliação: %.1f\n",
e.getSerie().getTitulo(), e.getTemporada(),
e.getNumeroEp(), e.getAvaliacaoEp()));
} else {
System.out.println("Série não encontrada!");
}
}
}
Erro apresentado