En SerieController.java
@GetMapping("/{id}/temporadas/top")
public List<EpisodioDTO> obtenerTopEpisodios(@PathVariable Long id) {
return servicio.obtenerTopEpisodios(id);
}
En SerieService.java
public List<EpisodioDTO> obtenerTopEpisodios(Long id) {
var serie = repository.findById(id).get();
return repository.top5Episodios(serie)
.stream()
.map(e -> new EpisodioDTO(e.getTemporada(), e.getTitulo(),
e.getNumeroEpisodio()))
.collect(Collectors.toList());
}
En SerieRepository.java
@Query("SELECT e FROM Serie s JOIN s.episodios e WHERE s = :serie ORDER BY e.evaluacion DESC LIMIT 5 ")
List<Episodio> top5Episodios(Serie serie);