Erro ao converter Object[] para list (Hibernate)

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.

[code]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());
}
}
}[/code]

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

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; }

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();

[quote=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(); [/quote]

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