Olá gente.
Estou desenvolvendo um projeto em JSF 2.0 com Primefaces.
Chegou a hora de tratar os erros e eu não estou conseguindo capturá-los.
Forcei o erro ao deletar um registro de uma tabela, porém o erro ocorre, mas eu não consigo capturar para apresentar a mensagem.
O meu bean tem o seguinte método:
public void excluir(){
if (empresa != null){
try{
Session session = HibernateUtil.currentSession();
EmpresaDao empDao = new EmpresaDao(session);
empDao.delete(empresa);
empresa = null;
}catch (Exception e){
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Erro ao excluir Parceiro: ", e.getMessage()));
}
}
}
Ao debugar, passou tranquilo sem gerar exception, porém não deletou o registro (óbivio), e gerou o seguinte erro no console do eclipse:
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`tigre`.`taboperacao`, CONSTRAINT `fk_TabOperacao_TabEmpresa` FOREIGN KEY (`empresaId`) REFERENCES `tabempresa` (`empresaId`) ON DELETE NO ACTION ON UPDATE NO ACTION)
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2015)
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1451)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:64)
at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1175)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1699)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
at br.com.titvs.ind.model.EmpresaDao.tableList(EmpresaDao.java:47)
at br.com.titvs.ind.control.EmpresaBean$1.fetchLazyData(EmpresaBean.java:125)
...
Alguém pode me dar um luz de como pegar esse erro e colocar no messages?