Pois eh black_fire, eu não estou conseguindo chegar ate a SQLException usando o JPA/Hibernate. 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.Estou usando JPA/hibernate, pelo que pude perceber o hibernate capta o que eu estou querendo, mais 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