1
resposta

Verificar existência de relação de entidade no banco

Boa noite,

Fiz a aplicação de livraria proposta pela Alura, porém, ao tentar apagar um autor que está associado a um livro, a aplicação não dá erro, sendo assim o usuário fica sem entender o porque não está deletando,

O usuário não sabe que não pode deletar um autor que está vinculado a um livro, então minha dúvida seria, como validar que existe relação e passar uma mensagem ao usuário? Pois não acertei fazer sozinho.

Ou seja, como seria a lógica de r no banco de dados verificar se aquele autor tem alguma relação com outra tabela e retornar pro usuário um aviso do porque ele não pode deletar aquele registro associado?

1 resposta

Olá Felipe, tudo bem?

No seu caso, se um autor estiver associado a um livro você não pode simplesmente deletar o autor sem antes remover a relação com o livro. Para isso, você pode utilizar uma restrição de chave estrangeira no banco de dados, que impede a remoção de um autor enquanto houver livros associados a ele.

Quando você tentar deletar um autor que está vinculado a um livro, o banco de dados irá lançar uma exceção indicando que a operação viola a restrição de integridade referencial. Você pode capturar essa exceção no seu código e exibir uma mensagem amigável para o usuário, informando que não é possível deletar o autor pois ele está associado a um livro.

Por exemplo, em Java utilizando o Hibernate, você pode capturar a exceção do tipo "ConstraintViolationException" e exibir uma mensagem personalizada para o usuário. Veja um exemplo de como fazer isso:

try {
    // Código para deletar o autor
} catch (ConstraintViolationException e) {
    // Mensagem de erro para o usuário
    System.out.println("Não é possível deletar o autor pois ele está associado a um livro.");
}

Dessa forma, o usuário será informado sobre o motivo pelo qual não é possível deletar o autor e entenderá a restrição existente.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software