Exception JDBC em JPA

4 respostas
josimarsis

Como faço para capturar a mensagem de erro JDBC em JPA? exemplo: Duplicate key

4 Respostas

Regis_A_Rocha

posso estar enganado, mais acredito que quando houver uma situaçao do tipo isso vai dar uma execption …

si foi isso q eu entendi neh…

josimarsis

A minha situação é a seguinte: Segue os metodos abaixo.

//Metodo Salvar da Classe Cadastro de Bairro public void Salvar() { try { beanBairro = new Bairro(); beanBairro.setBaiDescricao(jtfBairro.getText()); //chama o metodo salvar da classe Conexao e passa como parametro o objeto bairro populado Conexao.Salvar(beanBairro); } catch (Exception e) { //Local onde eu mostro o erro capturado do metodo salvar da classe Conexao atravez do comando //e.getMessage() JOptionPane.showMessageDialog(null, e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE); } }

//Metodo salvar da Classe Conexao public static void Salvar(Object objeto) throws EntityExistsException, IllegalStateException, IllegalArgumentException, TransactionRequiredException, Exception { EntityManager manager = null; try { manager = Conexao.getConexao(); manager.getTransaction().begin(); manager.persist(objeto); manager.getTransaction().commit(); JOptionPane.showMessageDialog(null, "Salvo com sucesso", "", JOptionPane.PLAIN_MESSAGE); } catch (EntityExistsException eee) { manager.getTransaction().rollback(); throw new EntityExistsException("Operação não realizada, tentativa de duplicidade de registros \n" + eee); } catch (IllegalStateException ise) { manager.getTransaction().rollback(); throw new IllegalStateException("operação não realizada \n" + "Erro exception number 2 - IllegalStateException"); } catch (IllegalArgumentException iae) { manager.getTransaction().rollback(); throw new IllegalArgumentException("operação não realizada \n" + "Erro exception number 3 - IllegalArgumentException"); } catch (TransactionRequiredException tre) { manager.getTransaction().rollback(); throw new TransactionRequiredException("operação não realizada \n" + "Erro exception number 4 - TransactionRequiredException"); } catch (Exception e) { manager.getTransaction().rollback(); throw new Exception("operação não realizada \n" + "Erro exception number 4 - TransactionRequiredException"); } }

Os metodos funcionam perfeitamente o meu problema se resume no seguinte quando tento duplicar por exemplo uma informação que é unica como a “descricao do bairro” uma exceção é lançada no metodo salvar da classe Conexao e remetido atravez do comando throw para o metodo salvar da classe Cadastro de Bairro. porém o erro que eu consigo captar é o seguinte :

javax.persistence.EntityExistsException: org.hibernate.exception.ConstraintViolationException: could not insert: [Beans.Bairro]

Porem atravez desta mensagem eu não consigo saber o que realmente aconteceu, por exemplo se foi uma duplicate key.

josimarsis

Estou usando JPA/hibernate, pelo que pude perceber o hibernate capta o que eu estou querendo, mais não queria amarrar o meu codigo ao hibernate e tbm não consegui mostrar esse erro extraindo-o do hibernate: Segue a mensagem do log de erro que o netbeans mostra:

13/08/2009 11:22:28 org.hibernate.util.JDBCExceptionReporter logExceptions //Eu quero esse codigo de erro WARNING: SQL Error: 1062, SQLState: 23000 13/08/2009 11:22:28 org.hibernate.util.JDBCExceptionReporter logExceptions //E quero essa mensagem SEVERE: Duplicate entry 'FLAUZINO' for key 2

C

Boa tarde josimarsis!! :smiley:

Como vc resolveu esse problema da duplicidade de chave?

Estou passando pelo msm problema atualmente e estou “batendo cabeça”… :?:

Se vc tiver alguma solução ou orientação ficarei muito agradecido!!!

Muito obrigado.

[]'s

Criado 12 de agosto de 2009
Ultima resposta 4 de mar. de 2011
Respostas 4
Participantes 3