Consulta hibernate está retornando objetos

5 respostas
C

Olá pessoal,

Tenho uma consulta no hibernate, que ao invés de me retornar os dados, retorna os objetos. Estou fazend a consulta assim:

public static void main(String[] args) {

Session sessao = HibernateDAO.getSession();

Transaction transaction = sessao.beginTransaction();
Query select = sessao.createQuery("FROM Curso");

	List gravado = select.list();

	Iterator item = gravado.iterator();

	while (item.hasNext()) {
		System.out.println(item.next()+ "\n\n\n");

	}

	transaction.commit();
	sessao.close();

}

-------------------------o arquivo HibernateDAO:

public class HibernateDAO {

private static SessionFactory factory;

static {
	try {
		factory = new Configuration().configure().buildSessionFactory();
	} catch (Exception e) {
		e.printStackTrace();
		factory = null;
	}
}

public static Session getSession() {
	return factory.openSession();
}

}

------------------------- A estrutura do projeto é essa:
/ (na raiz do projeto)
hibernate.cfg.xml
log4j.properties

br.com.hibernate
aqui fica a classe HibernateDAO

br.com.hibernate.mapeados
aqui fica os arquivos xml de mapeamento da classe

br.com.teste
aqui as classes de cada tabela com seus métodos getters e setters

br.com.teste.action
aqui as classes para testar. Para insert, update e delete está funcionando ok.
Apenas para consulta que está dando erro…

--------------- o resultado da pesquisa que ele me retorna é esse:

br.com.teste.Curso@139e351

No meu caso, tenho 6 índices gravados no banco. ele me retorna 6 linhas como essa acima com alguma modificação nos números depois do arroba (@).

Eu preciso dos dados contidos no banco! ele me retorna isso! O que faço? por acaso ele não está encontrando algum arquivo?
Se alguém puder me ajudar…

5 Respostas

A

Mas a consulta retorna o objeto mesmo, nao tem nada de errado nao. Se vc
fizer por exemplo select c.nome from Curso c ele retorna so os nomes, mas por default ele retorna os objetos. Outra coisa, pa que vc ta abrindo transacao para uma listagem? estranho…

Alberto

zepunk

Por se tratar de uma ferramenta de ORM, o hibernate trabalha com objetos.
por isto ele esta lhe retornando uma coleção de objetos.
você pode seguir o exemplo sitado acima.

C

eu estou aprendendo hibernate. Pode me ajudar explicando por favor.
Eu não preciso abrir transação para consulta?
Qual seria o procedimento?

Obrigado!

D

Você precisa usar a interface transaction.
Seu código esta correto.
O que você poderia fazer no seu teste é:

Session sessao = HibernateDAO.getSession(); 
Transaction transaction = sessao.beginTransaction(); 

Query select = sessao.createQuery("FROM Curso"); 

List gravado = select.list(); 

Iterator item = gravado.iterator(); 

while (item.hasNext()) { 
 Curso curso = (Curso) item.next();
 System.out.println(curso.getNome());
 
  //Imprime os outros atributos.
} 

transaction.commit(); 
sessao.close();

Entendeu?

C

VAleu demais cara! Deu certo!

Criado 11 de setembro de 2006
Ultima resposta 11 de set. de 2006
Respostas 5
Participantes 4