Hibernate. erro ao repetir consulta várias vezes [resolvido]

6 respostas
R

Cliquei várias vezes seguidas no botão atualizar de um formulário. O botao faz uma consulta simples.
Na sexta fez esse erro foi gerado:

Problem with checked-in Statement, discarding.

java.lang.NullPointerException

at org.firebirdsql.jdbc.AbstractPreparedStatement.clearParameters(AbstractPreparedStatement.java:349)

at com.mchange.v2.c3p0.stmt.GooGooStatementCache.refreshStatement(GooGooStatementCache.java:410)

at com.mchange.v2.c3p0.stmt.GooGooStatementCache.checkinStatement(GooGooStatementCache.java:129)

at com.mchange.v2.c3p0.impl.NewPooledConnection.checkinStatement(NewPooledConnection.java:143)

at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1670)

at org.hibernate.jdbc.AbstractBatcher.closePreparedStatement(AbstractBatcher.java:393)

at org.hibernate.jdbc.AbstractBatcher.closeStatement(AbstractBatcher.java:195)

at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:212)

at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:141)

at org.hibernate.loader.Loader.getResultSet(Loader.java:1207)

at org.hibernate.loader.Loader.doQuery(Loader.java:366)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:206)

at org.hibernate.loader.Loader.doList(Loader.java:1515)

at org.hibernate.loader.Loader.list(Loader.java:1498)

at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:111)

at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1253)

at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:299)

at src.model.GerenciadorConsultas.getTodosPecasEstruturais(GerenciadorConsultas.java:55)

at src.controller.ControladorTelaPesquisaPecaEstrutural.acaoAtualizar(ControladorTelaPesquisaPecaEstrutural.java:33)

at src.controller.ControladorTelaPesquisaModelo$2.actionPerformed(ControladorTelaPesquisaModelo.java:46)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)

at java.awt.Component.processMouseEvent(Component.java:5488)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)

at java.awt.Component.processEvent(Component.java:5253)

at java.awt.Container.processEvent(Container.java:1966)

at java.awt.Component.dispatchEventImpl(Component.java:3955)

at java.awt.Container.dispatchEventImpl(Container.java:2024)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)

at java.awt.Container.dispatchEventImpl(Container.java:2010)

at java.awt.Window.dispatchEventImpl(Window.java:1766)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

Exception in thread AWT-EventQueue-0 16:32:11,74016:32:11,740org.hibernate.exception.GenericJDBCException: could not execute query

at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)

at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)

at org.hibernate.loader.Loader.doList(Loader.java:1518)

at org.hibernate.loader.Loader.list(Loader.java:1498)

at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:111)

at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1253)

at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:299)

at src.model.GerenciadorConsultas.getTodosPecasEstruturais(GerenciadorConsultas.java:55)

at src.controller.ControladorTelaPesquisaPecaEstrutural.acaoAtualizar(ControladorTelaPesquisaPecaEstrutural.java:33)

at src.controller.ControladorTelaPesquisaModelo$2.actionPerformed(ControladorTelaPesquisaModelo.java:46)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)

at java.awt.Component.processMouseEvent(Component.java:5488)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)

at java.awt.Component.processEvent(Component.java:5253)

at java.awt.Container.processEvent(Container.java:1966)

at java.awt.Component.dispatchEventImpl(Component.java:3955)

at java.awt.Container.dispatchEventImpl(Container.java:2024)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)

at java.awt.Container.dispatchEventImpl(Container.java:2010)

at java.awt.Window.dispatchEventImpl(Window.java:1766)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

Caused by: org.firebirdsql.jdbc.FBSQLException: This statement is already closed.

at org.firebirdsql.jdbc.AbstractStatement.close(AbstractStatement.java:225)

at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1674)

at org.hibernate.jdbc.AbstractBatcher.closePreparedStatement(AbstractBatcher.java:393)

at org.hibernate.jdbc.AbstractBatcher.closeStatement(AbstractBatcher.java:195)

at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:212)

at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:141)

at org.hibernate.loader.Loader.getResultSet(Loader.java:1207)

at org.hibernate.loader.Loader.doQuery(Loader.java:366)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:206)

at org.hibernate.loader.Loader.doList(Loader.java:1515)

 31 more

org.firebirdsql.jdbc.FBSQLException: This statement is already closed.

at org.firebirdsql.jdbc.AbstractStatement.close(AbstractStatement.java:225)

at com.mchange.v1.db.sql.StatementUtils.attemptClose(StatementUtils.java:38)

at com.mchange.v2.c3p0.stmt.GooGooStatementCache$1.run(GooGooStatementCache.java:246)

at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:354)

Problem with checked-in Statement, discarding.

java.lang.NullPointerException

at org.firebirdsql.jdbc.AbstractPreparedStatement.clearParameters(AbstractPreparedStatement.java:349)

at com.mchange.v2.c3p0.stmt.GooGooStatementCache.refreshStatement(GooGooStatementCache.java:410)

at com.mchange.v2.c3p0.stmt.GooGooStatementCache.checkinStatement(GooGooStatementCache.java:129)

at com.mchange.v2.c3p0.impl.NewPooledConnection.checkinStatement(NewPooledConnection.java:143)

at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1670)

at org.hibernate.jdbc.AbstractBatcher.closePreparedStatement(AbstractBatcher.java:393)

at org.hibernate.jdbc.AbstractBatcher.closeStatement(AbstractBatcher.java:195)

at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:212)

at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:141)

at org.hibernate.loader.Loader.getResultSet(Loader.java:1207)

at org.hibernate.loader.Loader.doQuery(Loader.java:366)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:206)

at org.hibernate.loader.Loader.doList(Loader.java:1515)

at org.hibernate.loader.Loader.list(Loader.java:1498)

at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:111)

at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1253)

at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:299)

at src.model.GerenciadorConsultas.getTodosPecasEstruturais(GerenciadorConsultas.java:55)

at src.controller.ControladorTelaPesquisaPecaEstrutural.acaoAtualizar(ControladorTelaPesquisaPecaEstrutural.java:33)

at src.controller.ControladorTelaPesquisaModelo$2.actionPerformed(ControladorTelaPesquisaModelo.java:46)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)

at java.awt.Component.processMouseEvent(Component.java:5488)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)

at java.awt.Component.processEvent(Component.java:5253)

at java.awt.Container.processEvent(Container.java:1966)

at java.awt.Component.dispatchEventImpl(Component.java:3955)

at java.awt.Container.dispatchEventImpl(Container.java:2024)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)

at java.awt.Container.dispatchEventImpl(Container.java:2010)

at java.awt.Window.dispatchEventImpl(Window.java:1766)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

Exception in thread AWT-EventQueue-0 org.hibernate.exception.GenericJDBCException: could not execute query

at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)

at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)

at org.hibernate.loader.Loader.doList(Loader.java:1518)

at org.hibernate.loader.Loader.list(Loader.java:1498)

at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:111)

at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1253)

at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:299)

at src.model.GerenciadorConsultas.getTodosPecasEstruturais(GerenciadorConsultas.java:55)

at src.controller.ControladorTelaPesquisaPecaEstrutural.acaoAtualizar(ControladorTelaPesquisaPecaEstrutural.java:33)

at src.controller.ControladorTelaPesquisaModelo$2.actionPerformed(ControladorTelaPesquisaModelo.java:46)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)

at java.awt.Component.processMouseEvent(Component.java:5488)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)

at java.awt.Component.processEvent(Component.java:5253)

at java.awt.Container.processEvent(Container.java:1966)

at java.awt.Component.dispatchEventImpl(Component.java:3955)

at java.awt.Container.dispatchEventImpl(Container.java:2024)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)

at java.awt.Container.dispatchEventImpl(Container.java:2010)

at java.awt.Window.dispatchEventImpl(Window.java:1766)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

Caused by: org.firebirdsql.jdbc.FBSQLException: This statement is already closed.

at org.firebirdsql.jdbc.AbstractStatement.close(AbstractStatement.java:225)

at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1674)

at org.hibernate.jdbc.AbstractBatcher.closePreparedStatement(AbstractBatcher.java:393)

at org.hibernate.jdbc.AbstractBatcher.closeStatement(AbstractBatcher.java:195)

at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:212)

at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:141)

at org.hibernate.loader.Loader.getResultSet(Loader.java:1207)

at org.hibernate.loader.Loader.doQuery(Loader.java:366)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:206)

at org.hibernate.loader.Loader.doList(Loader.java:1515)

 31 more

org.firebirdsql.jdbc.FBSQLException: This statement is already closed.

at org.firebirdsql.jdbc.AbstractStatement.close(AbstractStatement.java:225)

at com.mchange.v1.db.sql.StatementUtils.attemptClose(StatementUtils.java:38)

at com.mchange.v2.c3p0.stmt.GooGooStatementCache$1.run(GooGooStatementCache.java:246)

at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:354)

6 Respostas

_fs

lendo mente

Ao clicar a primeira vez, um objeto Session é criado e a consulta é disparada. Ao clicar a segunda vez (o primeiro procedimento ainda não acabou), sua aplicação pega a mesma session que já foi aberta e começa a fazer o serviço com ela. Então a ação acionada pelo primeiro click termina o trabalho e fecha a sessão, ferrando com a ação acionada pelo segundo click.

R

Veja o método de fazer a consulta e veja a classe que crio a sessao.

public static List getTodosDescricoesMateriais(){
		Session session = HibernateUtil.getSession();
		List descricoesMateriais = session.createCriteria(DescricaoMaterial.class).list();
		session.close();
		return descricoesMateriais;			
	}

package src.model;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

	private static final SessionFactory sessionFactory;
	
	static {
		try { 
			Configuration cfg = new Configuration();
			sessionFactory = cfg.configure().buildSessionFactory();
		} catch (Throwable ex) {
			ex.printStackTrace(System.out);
			throw new ExceptionInInitializerError(ex);
		}
	}
	
	public static Session getSession() throws HibernateException {
		return sessionFactory.openSession();
	}	

	public static void excluir(Object objeto) {
		Session session = getSession();
		Transaction transacao = session.beginTransaction();
		try{
			session.delete(objeto);
			transacao.commit();
		} finally {
			session.close();
		}
	}	
	
	public static void salvar(Object objeto) {
		Session session = HibernateUtil.getSession();
		Transaction transacao = session.beginTransaction();
		try {
			session.saveOrUpdate(objeto);
			transacao.commit();
		} finally{
		session.close();
		}
	}	
	
}
_fs

Poderes mentais de minha parte estão em baixa :mrgreen:

http://www.mail-archive.com/[email removido]/msg00253.html

Não achei mais que isso.

R

O problema foi resolvido ao atualizar o hibernate da versão 3.0.3 para 3.0.5.

R

Como faço pra colocar o [resolvido] nesse tópico?

_fs

Sendo moderador do fórum :smiley:

Criado 27 de maio de 2005
Ultima resposta 30 de mai. de 2005
Respostas 6
Participantes 2