Busca Hibernate

4 respostas
Guto_Magalhaes

Pessoal, estou começando com Hibernate, e eu queria saber como fazer uma busca. Me disseram que o Hibernate deve buscar e retornar a entidade. Esta correto? Aqui esta o codigo que eu fiz, mas esta errado. Ele tera de listar todos os elementos da tabela.

Obrigado

public Collection carregarTodosClientes() throws ClassedeException

{

Collection c = null;

Session session = factory;
try
	{
		if(session != null)
		{
			c = (Collection)session.load(ClienteEntity.class, null);
		}
	}
	catch(Exception e)
	{
		throw new ClassedeException(ClassedeException.COD_ERROR_DB, e);
	}
	finally
	{
		if((session != null) && (session.isOpen()))
		{
			session.close();
		}
	}
	return c;
}

4 Respostas

Abdon

Seu erro é um classcastexception não é?
Isto acontece prq o metodo load não retorna uma Collection e sim uma instancia da classe que vc pedio, no caso: ClienteEntity.
Vc não pode passar o argumento como null. se vc quizer carregar uma lista faça

Criteria crit = session.createCriteria(ClienteEntity.class)
crit.list();
Guto_Magalhaes

Blza cara, funfo. Valew. E aproveitando o gancho, ta dando uma zica no inserir. Eu passo direto a entidade pro Session.save, tipo:

public class ClienteDAO
{

private Session factory;

public ClienteDAO(Session factory)
{
    this.factory = factory;
public void inserirCliente(ClienteEntity entity) throws ClassedeExcecao

{

Session session = factory;
if(session != null && entity != null)
    {
        session.save(entity);
        session.flush();
    }

}

obrigado pessoal

Abdon

Ola, post o stacktrace para eu poder analizar.
Assim, eu acho que a sua zica é prq vc não esta abrindo uma transação antes de inserir

session.getTransaction().beginTransaction();
session.save(obj)
session.getTransaction().commit();

apenas uma dica vc esta não esta lançando a sua ClassedeExcecao faça o seguinte:

try {
//whatever
} catch (HibernateException e) {
    throw new ClassedeExcecao(e);
} catch(Exception ex){
    throw new ClassedeExcecao(e);
}

é nozes, se não for a transação, post o seu stacktrace.

Guto_Magalhaes

Cara, resolvi o problema. O problema era no entity.hbm.xml. O id estava como assigned, e eu mudei para increment.

Valew pela ajuda.

Criado 31 de julho de 2007
Ultima resposta 1 de ago. de 2007
Respostas 4
Participantes 2