Erro ao excluir objeto - Hibernate

6 respostas
J

Pessoal, estou tentando excluir meus objetos e aparece esse ero:

Erro ao excluir a instituição: 10 Could not execute JDBC batch update

Codigo da action:
if(acao.equals("excluir"))
        {
            int id = Integer.parseInt(request.getParameter("id"));

            GenericDAO instituicaoDao = new GenericDAO(Instituicao.class);

            instituicao = (Instituicao) instituicaoDao.carregarPeloId(id);

            try
            {
                dao.excluir(instituicao);
                retorno = "sucesso";
                msg = " A instituição foi excluída com sucesso no sistema!";
            }
            catch(Exception e)
            {
                e.printStackTrace();
                retorno = "erro";
                msg = "Erro ao excluir a instituição: " + instituicao.getId() + e.getMessage().toString();
            }
        }
DAO:
public void excluir(Object obj) throws HibernateException
    {
        Transaction tx;
        tx = null;
        session = SessionFactoryUtil.getInstance().openSession();
        tx = session.beginTransaction();
        session.delete(obj);
        tx.commit();
        
        HibernateException e = null;
        
        if(tx != null && tx.isActive())
        {
            try
            {
                tx.rollback();
            }
            catch(HibernateException e1)
            {
                e1.printStackTrace();
            }
            throw e;
        }

        session.close();
    }

Nao sei porque nao esta exlcuindo.
Se alguem puder me ajudar, agradeço.

6 Respostas

georgesq

manda a stackTrace inteira.

R

Às vezes isso acontece porque a exclusão do registro violaria a integridade referencial da tabela. Mas, como disse o georgesq, é preciso consultar o stack trace completo para ter certeza.

J

Já dei uma olhada na tabela e nesse caso nao acontece isso. Essa tabela que estou referenciando nao tem ligação com nenhuma outra.

Só aparece na tela esse erro pra mim. Como poderei mostrar o stack trace completo?

ksi

Dê uma olhada no log de saída do console do servidor.
Caso tiver dificuldades para isso, você pode carregar tudo na mensagem. Isso concatena todo o stack trace na variável, mas isso não é recomendável. Use somente se não conseguir a primeira alternativa.

StringBuilder sb = new StringBuilder(1234);
		int k = 0;
		
		for (StackTraceElement es : e.getStackTrace()) {
			sb.append(es.toString());
			sb.append("\r\n");
			
			if (k++ == 20) {
				break;
			}
		}
		
		msg = sb.toString();
J

Stack Trace completa:

Erro ao excluir a instituição: org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71) org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253) org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237) org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:146) org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) catalogo.dao.GenericDAO.excluir(GenericDAO.java:79) catalogo.controle.actions.ManterInstituicaoAction.execute(ManterInstituicaoAction.java:100) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) catalogo.controle.seguranca.FiltroControleAcesso.doFilter(FiltroControleAcesso.java:76)

J

Alguem sabe o que pode ser?

Criado 15 de março de 2011
Ultima resposta 21 de mar. de 2011
Respostas 6
Participantes 4