Erro ao converter Object[] para list (Hibernate)

3 respostas
lokicat1

Olá pessoal,

estou trabalhando com o hibernate e estou tentando fazer um método que execute uma sql nativa, através do "createSQLQuery(sql).list", pesquisei no google sobre este método e percebi que ele retorna um list de objects e não consigo fazer um cast de list ... será que alguém poderia me ajudar ...

desde já obrigada.
Abaixo segue o meu codigo fonte ...

Simone.

import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import reservas.beans.Recurso;

public class TesteSelect {

    private Session session;
    private Transaction transaction;

    private void closeSession() {
        if (session != null && session.isConnected()) {
            session.close();
        }
    }

    public List<Recurso> executeSQL(String sql) {
        List<Recurso> list = null;
        try {
            session = HibernateUtility.getSession();
            list =  (List<Recurso>) session.createSQLQuery(sql).list();
            return list;
        } catch (HibernateException e) {
            System.out.println("Erro: " + e.getMessage());
        } finally {
            closeSession();
        }
        return null;
    }

    public static void main(String args[]) {
        TesteSelect a1 = new TesteSelect();
        List<Recurso> lista1 = a1.executeSQL("select * from web_res_recursos");
        for(int i = 0; i < lista1.size(); i++) {
//            Object[] teste = (Object[]) lista1.get(i);
//            System.out.println((String) teste[3]);
            System.out.println("Descricao: " + lista1.get(i).getDescricao());
        }
    }
}
Erro!
Hibernate: select * from web_res_recursos
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to reservas.beans.Recurso
        at reservas.persistencia.TesteSelect.main(TesteSelect.java:103)
Java Result: 1

3 Respostas

lokicat1

Ae galera consegui resolver … se alguem tiver com a msm duvida o código tah ai ! =D

public List<Recurso> executeSQL(String sql) { List<Recurso> list = null; try { session = HibernateUtility.getSession(); SQLQuery query = session.createSQLQuery(sql).addEntity(Recurso.class); list = query.list(); return list; } catch (HibernateException e) { System.out.println("Erro: " + e.getMessage()); } finally { closeSession(); } return null; }

L

Amiga, muito bom, eu estava com o problema e não tava conseguindo resolver sua resposta me ajudou e muito, fiz praticamente a mesma coisa mas eliminei uma linha.
Apenas pra ficar mais compacto o código.

public List<Recurso> executeSQL(String sql) { List<Recurso> list = null; try { session = HibernateUtility.getSession(); SQLQuery query = session.createSQLQuery(sql).addEntity(Recurso.class).list(); return list; } catch (HibernateException e) { System.out.println("Erro: " + e.getMessage()); } finally { closeSession();

F

lico:
Amiga, muito bom, eu estava com o problema e não tava conseguindo resolver sua resposta me ajudou e muito, fiz praticamente a mesma coisa mas eliminei uma linha.
Apenas pra ficar mais compacto o código.

public List<Recurso> executeSQL(String sql) { List<Recurso> list = null; try { session = HibernateUtility.getSession(); SQLQuery query = session.createSQLQuery(sql).addEntity(Recurso.class).list(); return list; } catch (HibernateException e) { System.out.println("Erro: " + e.getMessage()); } finally { closeSession();

olha acho q não vai funcionar…

pq em nenhum lugar você está retornando a Lista ela está ficando sempre Nula… você apagou a linha que dizia isto hehehe

Criado 16 de julho de 2009
Ultima resposta 19 de ago. de 2011
Respostas 3
Participantes 3