Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Haz como yo hice

import jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "series")
public class Serie {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(unique = true, nullable = false)
private String titulo;

private Integer totalTemporadas;
private Double evaluacion;
private String genero;
private String actores;
private String poster;

@Column(length = 2000)
private String sinopsis;

@OneToMany(mappedBy = "serie", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
private List<Episodio> episodios = new ArrayList<>();

public Serie() {
}

public Serie(DatosSerie datos) {
    this.titulo = datos.titulo();
    this.totalTemporadas = datos.totalTemporadas();
    this.genero = datos.genero();
    this.actores = datos.actores();
    this.poster = datos.poster();
    this.sinopsis = datos.sinopsis();

    try {
        this.evaluacion = Double.valueOf(datos.evaluacion());
    } catch (Exception e) {
        this.evaluacion = 0.0;
    }
}

public void setEpisodios(List<Episodio> episodios) {
    episodios.forEach(e -> e.setSerie(this));
    this.episodios = episodios;
}

public void agregarEpisodio(Episodio episodio) {
    episodio.setSerie(this);
    this.episodios.add(episodio);
}

public Long getId() {
    return id;
}

public String getTitulo() {
    return titulo;
}

public Integer getTotalTemporadas() {
    return totalTemporadas;
}

public Double getEvaluacion() {
    return evaluacion;
}

public String getGenero() {
    return genero;
}

public String getActores() {
    return actores;
}

public String getPoster() {
    return poster;
}

public String getSinopsis() {
    return sinopsis;
}

public List<Episodio> getEpisodios() {
    return episodios;
}

@Override
public String toString() {
    return "Serie{" +
            "id=" + id +
            ", titulo='" + titulo + '\'' +
            ", totalTemporadas=" + totalTemporadas +
            ", evaluacion=" + evaluacion +
            ", genero='" + genero + '\'' +
            '}';
}

}

import jakarta.persistence.*;
import java.time.LocalDate;

@Entity
@Table(name = "episodios")
public class Episodio {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private Integer temporada;
private String titulo;
private Integer numeroEpisodio;
private Double evaluacion;
private LocalDate fechaLanzamiento;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "serie_id")
private Serie serie;

public Episodio() {
}

public Episodio(Integer numeroTemporada, DatosEpisodio datosEpisodio) {
    this.temporada = numeroTemporada;
    this.titulo = datosEpisodio.titulo();
    this.numeroEpisodio = datosEpisodio.numero();

    try {
        this.evaluacion = Double.valueOf(datosEpisodio.evaluacion());
    } catch (Exception e) {
        this.evaluacion = 0.0;
    }

    try {
        this.fechaLanzamiento = LocalDate.parse(datosEpisodio.fechaLanzamiento());
    } catch (Exception e) {
        this.fechaLanzamiento = null;
    }
}

public Long getId() {
    return id;
}

public Integer getTemporada() {
    return temporada;
}

public String getTitulo() {
    return titulo;
}

public Integer getNumeroEpisodio() {
    return numeroEpisodio;
}

public Double getEvaluacion() {
    return evaluacion;
}

public LocalDate getFechaLanzamiento() {
    return fechaLanzamiento;
}

public Serie getSerie() {
    return serie;
}

public void setSerie(Serie serie) {
    this.serie = serie;
}

@Override
public String toString() {
    return "Episodio{" +
            "temporada=" + temporada +
            ", titulo='" + titulo + '\'' +
            ", numeroEpisodio=" + numeroEpisodio +
            ", evaluacion=" + evaluacion +
            ", fechaLanzamiento=" + fechaLanzamiento +
            '}';
}

}

var json = consumoApi.obtenerDatos(URL_BASE + nombreSerie.replace(" ", "+") + API_KEY);
DatosSerie datosSerie = conversor.obtenerDatos(json, DatosSerie.class);

Serie serie = new Serie(datosSerie);

List temporadas = new ArrayList<>();

for (int i = 1; i <= datosSerie.totalTemporadas(); i++) {
json = consumoApi.obtenerDatos(URL_BASE + nombreSerie.replace(" ", "+") + "&season=" + i + API_KEY);
DatosTemporada datosTemporada = conversor