Tratamento de exceções com Hibernate!

5 respostas
M

Olá a todos, tenho as classes Cidade e Pessoa, onde tenho uma pessoa que mora em uma cidade e que na cidade pode haver várias pessoas?Como posso estar lançando alguma exceção se quiser deletar uma cidade, mas nesta cidade há pessoas cadastradas?

5 Respostas

normandesjr

Amigo,

Existem algumas maneiras de se fazer isso.

A primeira dela e mais direta seria antes de você deletar, pesquisar se existe alguma cidade com alguma pessoa e caso exista você lança uma exceção do tipo BusinessException (criada por você, claro).

A segunda maneira é, se o seu banco utiliza integridade relacional, quando você tentar apagar o banco não irá deixar, e o Hibernate irá lançar uma exceção: ConstraintViolationException (ou algo parecido). Então é só você capturar e dizer que não é possível apagar a cidade.

Só um detalhe sobre está última opção, como o Hibernate não faz os inserts e updates na hora que você “manda”, ele deixa tudo para o final, se você tiver códigos depois do método save, chame o flush, por exemplo:

session.save(pessoa);
session.flush();
catch (ConstraintViolationException c) {
  // Aqui você pode lançar outra exception, ou sei lá o que.. rsrsrs

Abraços.

M

Bom a segunda não deu, porque permitiu eu apagar!!E a segunda como poderia estar fazendo?

M

Claro, verificando se há uma pessoa cadastrada na cidade selecionada!!

F

Uma coisa que percebi em relação a exclusão.
Se eu tentar excluir um registro que já foi excluído ou que não existe, o Hibernate me retorna um HibernateException e não uma exception mais especialidade facilitando a identificação do ocorrido.

M

Vi que é apenas verificar se a coleção está vazia ou não!!Muito simples!!Dai, proibindo a exclusão!!

Criado 29 de outubro de 2007
Ultima resposta 29 de out. de 2007
Respostas 5
Participantes 3