Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Chave duplicada!!!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Estou tomando este erro ao executar o literAlura. https://github.com/rthoaldo/literalura

1 resposta
solução!

Olá Rafael.

Tudo bem?

Pelo que vi na imagem, você está recebendo um erro de DataIntegrityViolationException devido a uma chave duplicada no banco de dados. O erro específico é que a chave title com o valor "Moby Dick; Or, The Whale" já existe e não pode ser inserida novamente.

Esse tipo de erro ocorre quando você tenta inserir um registro com um valor em uma coluna que deve ser única, mas esse valor já existe no banco de dados.

Aqui estão algumas sugestões para resolver esse problema:

  • Verificar se o registro já existe antes de inserir: Antes de tentar inserir um novo livro, verifique se um livro com o mesmo título já existe no banco de dados. Se existir, você pode optar por atualizar o registro existente ou simplesmente ignorar a inserção.

    @Autowired
    private LivroRepository livroRepository;
    
    public void saveLivro(Livro livro) {
        Optional<Livro> existingLivro = livroRepository.findByTitle(livro.getTitle());
        if (existingLivro.isPresent()) {
            // Atualizar o livro existente ou lançar uma exceção personalizada
            // livroRepository.save(existingLivro.get());
            throw new DuplicateKeyException("Livro com este título já existe");
        } else {
            livroRepository.save(livro);
        }
    }
    
  • Tratar a exceção: Você pode tratar a exceção DataIntegrityViolationException para fornecer uma mensagem de erro mais amigável ao usuário.

    @Service
    public class LivroService {
        @Autowired
        private LivroRepository livroRepository;
    
        public void saveLivro(Livro livro) {
            try {
                livroRepository.save(livro);
            } catch (DataIntegrityViolationException e) {
                throw new DuplicateKeyException("Livro com este título já existe", e);
            }
        }
    }
    

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.