En mi caso con el codigo de la profe:
var serieEncontrada = 0;
Me causa un error: Pero serie.get() devuelve un objeto de tipo Serie. Esto causa un error de tipo, porque no puedes asignar un objeto Serie a una variable int.
Cuando intento usar:
serieEncontrada.setEpisodios(episodios);
El compilador no reconoce serieEncontrada como un objeto Serie, y falla.
La solución:
Declara serieEncontrada como Serie y no como int, por ejemplo:
Serie serieEncontrada = null;
Codigo corregido:
private void buscarEpisodioPorSerie() {
mostrarSeriesBuscadas();
System.out.println("Escribe le nombre de la serie de la cual deseas ver!!!");
var nombreSerie = teclado.nextLine();
Optional<Serie> serie = series.stream()
.filter(s -> s.getTitulo().toLowerCase().contains(nombreSerie.toLowerCase()))
.findFirst();
List<DatosTemporadas> temporadas = null;
Serie serieEncontrada; // = null;
if (serie.isPresent()) {
serieEncontrada = serie.get();
temporadas = new ArrayList<>();
for (int i = 1; i <= serieEncontrada.getTotalTemporadas(); i++) {
var json = consumoApi.obtenerDatos(URL_BASE + serieEncontrada.getTitulo().replace(" ", "+") + "&season=" + i + API_KEY);
DatosTemporadas datosTemporada = conversor.obtenerDatos(json, DatosTemporadas.class);
temporadas.add(datosTemporada);
}
temporadas.forEach(System.out::println);
} else {
System.out.println("Serie no encontrada.");
return;
}
List<Episodio> episodios = temporadas.stream()
.flatMap(d -> d.episodios().stream()
.map(e -> new Episodio(d.numero(), e)))
.collect(Collectors.toList());
episodios.forEach(e -> e.setSerie(serieEncontrada));
serieEncontrada.setEpisodios(episodios);
// Persistimos la serie junto con los episodios en la base de datos
repository.save(serieEncontrada);
}
Correjido por el error de colocar serieEncontrada = null;
Y por haber olvidado guardar los datos en la DB:
// Persistimos la serie junto con los episodios en la base de datos
repository.save(serieEncontrada);
Porque el codigo anterior, si bien no daba error al correr, traia todos los datos nulos a la DB.