2
respostas

[Bug] Episodios duplicados

Reparei que se consultarmos os Episódios (item 2 do menu) para a mesma série várias vezes, os registros na tabela episodios vão sendo gravados novamente, mesmo já estando lá para aquela série buscada.

Como deveríamos fazer para a gravação não acontecer novamente? Ou então para ele gravar apenas episodios novos, em caso de novos episodios lançados para aquela série?

Não sei se expliquei direito minha dúvida.

Obrigado.

2 respostas

Olá, Carlos! Entendi sua dúvida e acredito que posso te ajudar.

Pelo que você descreveu, parece que a aplicação está sempre gravando novos episódios, mesmo que eles já existam no banco de dados. Isso pode acontecer se não houver uma verificação adequada antes de inserir os dados.

Uma possível solução seria verificar se o episódio já existe antes de tentar salvá-lo. Você pode fazer isso consultando o banco de dados para ver se um episódio com o mesmo nome e série já existe. Se existir, você não precisa salvá-lo novamente.

Aqui está um exemplo de como você poderia fazer isso:

Episodio episodioExistente = episodioRepository.findByNomeAndSerie(nomeEpisodio, serie);
if (episodioExistente == null) {
    episodioRepository.save(novoEpisodio);
}

Neste exemplo, episodioRepository é o seu repositório Spring Data JPA para a entidade Episodio. O método findByNomeAndSerie é um método que você precisará adicionar ao seu repositório. Ele deve retornar um episódio que corresponda ao nome e à série fornecidos. Se não houver tal episódio, ele retorna null.

Se o episódio não existir (ou seja, episodioExistente é null), então você pode salvar o novo episódio.

Quanto à sua segunda pergunta, sobre como gravar apenas episódios novos em caso de novos episódios lançados para aquela série, a abordagem seria semelhante. Você precisaria verificar se o episódio já existe antes de tentar salvá-lo. Se o episódio não existir, você pode salvá-lo. Se existir, você pode optar por atualizar os dados do episódio existente ou simplesmente ignorá-lo.

Espero ter ajudado e bons estudos!

Obrigado pela ajuda Renan.

Acho que aqui complicou um pouco, porque no curso nós criamos o repositório para a Série somente, e os episódios estão sendo salvos em cascata conforme se solicita para salvar a Série. Pelo que você explicou, acho que eu teria que criar aqui um novo repositório baseado na classe Episodio. Seria isso mesmo?