Pessoal, eu estou fazendo usando createSQLQuery pra uma consulta em duas tabelas, com inner join e quero ter como retorno um arraylist conforme método abaixo:
publicList<MetasProjecao>listarPorHQLL(Stringhql)throwsBusinessException{try{Queryquery=getSession().createSQLQuery("SELECT M.COD_VENDEDOR,"+"V.FANTASIA"+" M.META_CLIENTES, M.CLIENTES "+" FROM META M "+" INNER JOIN VENDEDOR V ON (M.COD_VENDEDOR = V.COD_VENDEDOR) "+" ORDER BY V.FANTASIA").addEntity("meta",MetasProjecao.class);returnquery.list();}catch(Exceptione){thrownewBusinessException(e);}}
só que ao invés de ele me devolver um arraylist de objetos, ele me devolve um array de objetos..
alguém aqui sabe como posso resolver?
Wilson, ele tá te retornando um Object[] porquê tu tá fazendo SQL puro.
Uma maneira de fazer a conversão é usar um ResultTransformer, como AliasToBeanTransformer.
Vais ter que colocar cada campo da pesquisa com um alias de nome igual ao teu atributo no bean destino da transformação.
Não sei se fui claro, mas já é um norte.
Abraço!
wilsontads
Sabe me dizer algum exemplo de como fazer algo parecido ?
wilsontads
Desculpe, man… na verdade, já tentei fazer dessa forma, porém
ele retornava dois objetos, meta e vendedor e no entanto deveria retornar um arraylist só com todos os campos pesquisados, certo?. =\
Cara, pela velocidade da tua resposta, faltou ao menos você pegar os termos que eu te passei e jogar no google.
Não tô querendo ser grosso, mas metade ou mais do nosso trabalho é pesquisa, e tenho certeza que tu sabes disso.
Tá aí o link, tá fácil de achar ali. Qualquer dúvida, só postar que a gente dá uma força.
Abraço!
wilsontads
Na verdade, eu pedi se tinha algum exemplo, por que conforme eu disse no tópico anterior, eu já tentei fazer AliasToBeanTransformer,
só que ele tava me retornando 2 objetos, e eu to tentando pegar, somente 1 arrayList de objetos.
wilsontads
Me corrija se eu estiver errado:
publicList<MetasProjecao>listarPorHQLL(Stringhql)throwsBusinessException{try{Queryquery=getSession().createSQLQuery("SELECT M.COD_VENDEDOR,"+"V.FANTASIA"+" M.META_CLIENTES, M.CLIENTES "+" FROM META M "+" INNER JOIN VENDEDOR V ON (M.COD_VENDEDOR = V.COD_VENDEDOR) "+" ORDER BY V.FANTASIA").addEntity("meta",MetasProjecao.class);.addJoin("vendedor",Vendedor.class);returnquery.list();}catch(Exceptione){thrownewBusinessException(e);}}
leoramos
Cara, que dois objetos ele está te trazendo? Agora minha cabeça entortou com o teu caso hehe
Agora, se há um relacionamento dessas tabelas, rola tu fazer isso aí com HQL mesmo, cara, pelo que eu tô vendo.
Pra ser mais claro, pra que eu realmente pudesse te ajudar, eu ia precisar da tua classe Vendedor e MetasProjecao. Podes postar?
Abraço!
M
marciavilaca
voce pode converter o resultado em um List de uma determinada classe, basta coloquar alias nos campos listados de sua query com o nome do atributo de sua classe
e acrescentar antes de query.list() esta linha
nao precisa ser uma entity mas tem que implementar serializable na classe
A
AndersonQuinteiro
marciavilaca:
voce pode converter o resultado em um List de uma determinada classe, basta coloquar alias nos campos listados de sua query com o nome do atributo de sua classe
e acrescentar antes de query.list() esta linha
nao precisa ser uma entity mas tem que implementar serializable na classe
Meu amigo, parabéns, eu estava com a mesma dificuldade do wilsontads, e fiz o que vc disse e aqui funcionou perfeitamente, obrigado por compartilhar.