[RESOLVIDO]Problema para obter um List atravez do Hibernate

3 respostas
C

opa pessoal blz… tenho o seguinte metodo que deve retornar um List

private List listar(){
        List listaresultado = null ;
        String hql;
        hql = "select Estado";
         try {
            Session s = HibernateUtil.getSessionFactory().openSession();
            s.beginTransaction(); // no debug.. apartir desta linha cai no catch
            Query q = s.createQuery(hql);
            listaresultado = q.list();
            atualizarLista(listaresultado);
            s.getTransaction().commit();
        } catch (HibernateException he) {
            he.printStackTrace();
        }

       return listaresultado;

    }

porem acusa o erro abaixo…

at org.hibernate.hql.ast.util.SessionFactoryHelper.findSQLFunction(SessionFactoryHelper.java:342)
        at org.hibernate.hql.ast.tree.IdentNode.getDataType(IdentNode.java:266)
        at org.hibernate.hql.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:143)
        at org.hibernate.hql.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:705)
        at org.hibernate.hql.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:529)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:645)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
        at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
        at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
        at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
        at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
        at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
        at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
        at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
        at telas.cadastroEstado.listar(cadastroEstado.java:56)
        at telas.cadastroEstado.<init>(cadastroEstado.java:37)
        at telas.cadastroEstado$7.run(cadastroEstado.java:306)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

estou aprendendo a utilizar hibernate … na vdd comecei a usar esse final de semana… se puder me dar uma luz aew agradeço

3 Respostas

vinnysoft

Olá!

Tenta criar um objeto Transaction para receber a transação:

public void salvar(Object obj, Session ss)
    {
        Transaction tx = ss.beginTransaction();

        try
        {
            ss.saveOrUpdate(obj);
            tx.commit();
        }
        catch (RuntimeException e)
        {
            tx.rollback();
            throw e;
        }
    }

Se não der, posta a sua configuração do hibernate.

Até +!

R

Iae Clayskl, o erro ta quando vc instancia a Session.

Vc colocou asism:

Session sessao = HibernateUtil.getSessionFactory().openSession(); //Não é para abrir uma nova sessao e sim pegar a atual

O correto é assim:

Session sessao = HibernateUtil.getSessionFactory().getCurrentSession();
C

opa … concluindo o topico… o problema estava na consulta hql que eu estava fazendo… o correto é assim … “from Estados”

Criado 27 de novembro de 2011
Ultima resposta 28 de nov. de 2011
Respostas 3
Participantes 3