Problema com Exceção de remoção de chave estrangeira

7 respostas
brunorota

Boa noite galera

Estou com um problema em tratar a exceção que é lançada quando eu tento remover um dado que ainda pertence em outra tabela

A exeção lançada quando isso acontece é

0:35:27,606 ERROR [org.hibernate.util.JDBCExceptionReporter] ERROR: update or delete on table "frente_de_caixa" violates foreign key constraint "fk96841dda6225a8a" on table "cliente"
  Detail: Key (frente_de_caixa_id)=(3) is still referenced from table "cliente".
20:35:27,606 WARN  [com.arjuna.ats.arjuna] ARJUNA-12125 TwoPhaseCoordinator.beforeCompletion - failed for SynchronizationImple< 0:ffff7f000101:126a:4e7a7ffd:97, org.hibernate.transaction.synchronization.HibernateSynchronizationImpl@1a92563a >: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1215) [:3.6.6.Final]
	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1148) [:3.6.6.Final]
	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1154) [:3.6.6.Final]
	at org.hib

Essa exceção é tratada pelo container direto?

Porque ela é lançada quando eu tento remover o dado da minha tabela com o método

public void delete(final ENTITY object){

       		   ENTITY e = em.merge(object);

               em.remove(e);
}

Eu tentei capturar essa exceção porém as 2 operações do código são executadas normalmente.

Eu gostaria de poder capturar essa exceção pra poder mostrar uma mensagem pro usuário, se tiver algum outro modo de eu consiguir mostrar essa mensagem pro usuário sem capturar essa exceção, estou aceitando dicas.

Se alguém puder ajudar, ficarei grato

Atenciosamente

7 Respostas

A

Cara,

vc vai ter que fazer um select na tabela frente_de_caixa para ver se existe o cliente que vc deseja excluir contem registro nesta tabela, caso sim, vc pode retorna uma mensagem para o usuario, caso nao, vc conseguirá exclui-lo.

t+

brunorota

É eu pensei nisso hehe

Não tem como manipular essa exceção que ele lança mesmo?

VAleww alissonvlaa

A

cara,

eu acho mais facil e mais elegante vc fazer o select do que vc tentar manipular a exceção… :smiley:

brunorota

O problema é que eu fazendo isso eu perco o meu método genérico. =/

Por isso eu estava procurando saber se tinha como eu manipular essa excetion.

A

mas vc nao vai fazer esse select ai, provalvelmente vc vai ter uma camada anterior, aonde fica sua regra de negocio, vc vai fazer nessa camada.

brunorota

Eh vdd uahua

Eskece

Tenho o meu BusinessService aki, falei bobagem hehehe

Valew alissonvla

Vou deixar o tópico aberto apenas pra saber se tem como eu manipular a exceção mesmo, porém jah vou usar essa solução do SELECT.

Valeww

A

flw cara… :lol:

Criado 21 de setembro de 2011
Ultima resposta 22 de set. de 2011
Respostas 7
Participantes 2