Flex + Hibernate createSQLQuery()

18 visualizações
Pular para a primeira mensagem não lida

TITO

não lida,
16 de abr. de 2009, 19:40:2716/04/2009
para flexdev
Pessoal ver se alguem consegue me ajudar...

Eu estou desenvolvendo uma aplicação utilizando Flex + Hibernate e
estou enfrantando o seguinte problema na hora de trazer informações do
banco utilizando o "createSQLQuery()" do Hibernate. O metodo que estou
utilizando pra isso é o seguinte:

public ArrayList<Object> listar(){
String query = "select
cod,nome,email,telefone,data_nascimento,frase,foto from usuarios";
session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
ArrayList<Object> lista = (ArrayList<Object>) session.createSQLQuery
(query).list();
session.getTransaction().commit();
return lista;
}

O grande problema é que em vez dos objetos do meu ArrayList ficar com
os nomes que eu mandei selecionar ele está me trazendo numeros. EX:

dei um "select nome,email from usuarios"
o certo seria minha listar retornar da seguinte forma:
<object>
<nome>Victor</nome>
<email>1...@hotmail.com</email>
<object>

mas ela não está retornando desta forma
ela retorna assim:
<object>
<0>Victor</0>
<1>1...@hotmail.com</1>
<object>

alguem poderia dar uma luz ai como faço pra retorna da outra forma sem
me trazer numeros????????

quando eu uso "createQuery("from Usuario")" ele me retorna normalmente
da forma que eu quero com os nomes mas estou precisando usar o metodo
"createSQLQuery()"

fico feliz se alguem me ajudar
abraços

Stefan Horochovec

não lida,
16 de abr. de 2009, 20:45:3916/04/2009
para fle...@googlegroups.com
Ola Tito, como vai?
 
Para isso voce deve criar um bean com os atributos que voce esta selecionando na query, e passar para o Hibernate atraves do setResultTransformer com qual bean deve ser feito o mapeamento... ex:

Voce cria um bean
 
public class BeanQuery {
 
    private String nomeNoBean;
 
    .....
 
}
 
E depois escreve a query normalmente, so adiciona o "setResultTransformer"...
 
List<BeanQuery> lista = session.createSQLQuery("select coluna as nomeNoBean from tabela).setResultTransformer(Transformers.aliasToBean(BeanQuery.class)).list();
 
E a lista retornará tipada....
 
Espero ter ajudado..
 
Abraço
Stefan Horochovec
Analista de Sistemas
Blog: http://www.horochovec.com.br/
Use Java, Flex e Linux



 
2009/4/16 TITO <vhs...@gmail.com>
--

TITO

não lida,
17 de abr. de 2009, 02:31:2617/04/2009
para flexdev
Obrigado Stefan pela ajuda

isso está sendo muito util pra min

abraços cara
Responder a todos
Responder ao autor
Encaminhar
0 nova mensagem