Olá Pessoal! Ao consultarmos os Episódios (item 2 do menu) para a mesma série, os registros na tabela episodios são gravados novamente, ou seja os episódios são todos duplicados. Como poderíamos fazer para gravar por cima se o episódio existir, sem criar um repositorio para Episodios, atualizando assim os episódios e não os duplicar? Obs: não temos o repositório para Episodios, os dados são gravados em cascata na Serie(esta tem o repositorio).
obrigado!
private void buscarEpisodioPorSerie(){
listarSeriesBuscadas();
System.out.println("Escolha uma série pelo nome:");
var nomeSerie = leitura.nextLine();
Optional<Serie> serie = series.stream()
.filter(s -> s.getTitulo().toLowerCase().contains(nomeSerie.toLowerCase()))
.findFirst();
if(serie.isPresent()) {
var serieEncontrada = serie.get();
List<DadosTemporada> temporadas = new ArrayList<>();
for (int i = 1; i <= serieEncontrada.getTotalTemporadas(); i++) {
var json = consumo.obterDados(ENDERECO + serieEncontrada.getTitulo().replace(" ", "+") + "&season=" + i + API_KEY);
DadosTemporada dadosTemporada = conversor.obterDados(json, DadosTemporada.class);
temporadas.add(dadosTemporada);
}
temporadas.forEach(System.out::println);
List<Episodio> episodios = temporadas.stream()
.flatMap(d -> d.episodios().stream()
.map(e -> new Episodio(d.numero(), e)))
.collect(Collectors.toList());
serieEncontrada.setEpisodios(episodios);
repositorio.save(serieEncontrada);
}else{
System.out.println("Série não encontrada!");
}
}