Hibernate + list + combo box

12 respostas
M

Boa tarde a todos!

Sou novato em java e estou com um problema ao criar uma lista com o hibernate.

A lista é criada, porém na hora de usá-la, dá um erro de conversão.

Etapas:
Criei um método que retorna uma lista em minha classe DAO.
Neste método fiz uma query com uma consulta, a qual a converto em lista, com list().

Problema:
Não consigo jogá-la dentro de um Array list com a entidade desta classe.

Segue os códigos.

Classe ParticipanteDAO
@SuppressWarnings("unchecked")
	public List<Participante> listar(){
		org.hibernate.classic.Session session = br.com.contabilidade.util.HibernateUtil.getSessionFactory().openSession();
		session.beginTransaction();
		List<Participante> l1=session.createSQLQuery("select * from Participante").list();
		
		session.getTransaction().commit();
		session.close();
		return l1;
		
	}
Classe Main
public static void main(String[] args) {

		ParticipanteDao dao = new ParticipanteDao();

		List<Participante> listaParticipantes = dao.listar();

		for (Participante participante : listaParticipantes) {

		}

	}
}

Erro
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to br.com.contabilidade.entidade.Participante

Intenção

Criar esta lista dentro de um combo box

Obrigado!

12 Respostas

C

De uma olhada em criteria, para fazes a sql de pesquisa… e tente usar um iterator apos o list(); , no Sql… Talvez resolva!

M

Boa tarde, clarel.filho!

Como faço para buscar todos os resultados de uma tabela, como o criteria?

@SuppressWarnings("unchecked")
	public List<Participante> listParticipante(){
		org.hibernate.classic.Session session = br.com.contabilidade.util.HibernateUtil.getSessionFactory().openSession();
		session.beginTransaction();
		 Criteria criterio = getSession().createCriteria(Participante.class);
criterio.list();
		 
	        return (List<Participante>) criterio;
	}
	}
seria algo assim? Obrigado
R

Se seu hibernate esta mapeado corretamente, tenta assim:

List lista = session.createQuery(“FROM Participante”).list();

return lista;

Até mais.

C
No meu caso que tenho um criador de session, e sessionfactory.. como aprendi na FJ28 da caelum.. vou lhe mandar e você da uma olhada:
package br.com.caelum.goodbuy.infra;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;

@Component
public class CriadorDeSession implements ComponentFactory<Session>
{
	private final SessionFactory factory;
	private Session session;

	public CriadorDeSession(SessionFactory factory)
	{
		this.factory = factory;
	}

	@PostConstruct
	public void abre()
	{
		this.session = factory.openSession();
	}

	@Override
	public Session getInstance()
	{
		return this.session;
	}

	@PreDestroy
	public void fecha()
	{
		this.session.close();
	}

}
package br.com.caelum.goodbuy.infra;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;

@Component
@ApplicationScoped
public class CriadorDeSessionFactory implements ComponentFactory<SessionFactory>
{

	private SessionFactory factory;

	@PostConstruct
	public void abre()
	{
		AnnotationConfiguration configuration = new AnnotationConfiguration();
		configuration.configure();

		this.factory = configuration.buildSessionFactory();;
	}

	@Override
	public SessionFactory getInstance()
	{
		return this.factory;
	}

	@PreDestroy
	public void fecha()
	{
		this.factory.close();
	}
}
e as pesquisa
@SuppressWarnings("unchecked")
	public List<Cliente> listaTudo()
	{

		Query query = session.createQuery("from Cliente ORDER BY apelido ASC");

		return session.createCriteria(Cliente.class)
				.addOrder(Order.asc("apelido")).list();
	}
R

Nao vejo necessidade de usar o criteria, se sua intencao é somente retornar uma List.

@SuppressWarnings(unchecked)

public List listaTudo()

{

return session.createQuery(from Cliente ORDER BY apelido ASC).list();

}

so essas poucas linhas ja retornam a List, nao precisa nem instanciar uma List, o proprio .list() ja faz a conversao pra voce.

M

Boa tarde!

rof2004 e clarel.filho
meu hibernate está config certo, ele cria e tals.
e todos os métodos que me passaram retornam isto

antlr/ANTLRException

obrigado

R

Mano, da uma olhada nesse topico: http://www.guj.com.br/java/109252-erro-ao-tentar-executar-um-select-com-hibernate

M

No meu aqui só está funcionando, até aquele erro de cast, quando uso o CreateSQLQuery
vejo as variáveis e tal , a list, porém na hora de usar dá o erro cast.

M

Valeu rof

meu professor esqueceu deste pacote, até falei com ele que poderia ser, mas como tinha dado certo uma vez, ignoramos esta possibilidade.

baixei lá e rodou.

Vou tentar jogar na combobox agora, se der certo, já vou concluir.

obrigado!

C

Você fez o que o rof20004 falou? no caso do projeto que lhe mandei estou usando:
antlr-2.7.6.jar
hibernate-3.3.2.jar

Espero que isto ajude, Abraço

M

Deu certo sim, clarel. Obrigado!

Obrigado a todos!

Consegui resolver com poucas linhas,
agora vou prosseguir no projeto.

Abraço!

R

heheheeh…acontece =D

Criado 9 de outubro de 2012
Ultima resposta 9 de out. de 2012
Respostas 12
Participantes 3