Como se ve en el video en el minuto que Genesys añade:
@OneToMany(mappedBy = "serie", cascade = CascadeType.ALL)
Y luego arranca el codigo, se ve como al seleccionar el item 2 (Buscar episodios), y luego escoge "Vikings" a ella le sale "INSERT" en los episodios. En mi caso sigue apareciendo "SELECT":
Adjunto el codigo de las clases que se modificaron:
Clase Episodio:
package com.aluracursos.screenmatch.model;
import jakarta.persistence.*;
import java.time.LocalDate;
import java.time.format.DateTimeParseException;
@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 fechaDeLanzamiento;
@ManyToOne
private Serie serie;
public Episodio(){}
public Episodio(Integer numero, DatosEpisodio d) {
this.temporada = numero;
this.titulo = d.titulo();
this.numeroEpisodio = d.numeroEpisodio();
try{
this.evaluacion = Double.valueOf(d.evaluacion());
}catch (NumberFormatException e){
this.evaluacion = 0.0;
}
try{
this.fechaDeLanzamiento = LocalDate.parse(d.fechaDeLanzamiento());
} catch (DateTimeParseException e){
this.fechaDeLanzamiento = null;
}
}
Getters y setters omitidos (Por limite de caracteres)
Clase Serie:
package com.aluracursos.screenmatch.model;
import jakarta.persistence.*;
import jakarta.persistence.Id;
import java.util.List;
import java.util.OptionalDouble;
@Entity
@Table(name = "series")
public class Serie {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long Id;
@Column(unique = true)
private String titulo;
private Integer totalTemporadas;
private Double evaluacion;
private String poster;
@Enumerated(EnumType.STRING)
private Categoria genero;
private String actores;
private String sinopsis;
@OneToMany(mappedBy = "serie", cascade = CascadeType.ALL)
private List<Episodio> episodios;
public Serie(){}
public Serie(DatosSerie datosSerie){
this.titulo = datosSerie.titulo();
this.totalTemporadas = datosSerie.totalTemporadas();
this.evaluacion = OptionalDouble.of(Double.valueOf(datosSerie.evaluacion())).orElse(0) ;
this.poster = datosSerie.poster();
this.genero = Categoria.fromString(datosSerie.genero().split(",")[0].trim());
this.actores = datosSerie.actores();
this.sinopsis = datosSerie.sinopsis();
}
@Override
public String toString() {
return "genero=" + genero +
" titulo='" + titulo + '\'' +
", totalTemporadas=" + totalTemporadas +
", evaluacion=" + evaluacion +
", poster='" + poster + '\'' +
", actores='" + actores + '\'' +
", sinopsis='" + sinopsis + '\'';
}
Getters y setters omitidos (Por limite de caracteres)
Archivo Aplication.properties
spring.datasource.url=jdbc:postgresql://${DB_HOST}/${DB_NAME}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}
spring.datasource.driver-class-name=org.postgresql.Driver
hibernate.dialect=org.hibernate.dialect.HSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.format-sql=true