Hibernate: Retorno de query.list(), com 2 Objetos em from
7 respostas
T
tiagogn
E ae galera…to com um probleminha:
Estou fazendo um consulta usando HQL, desse tipo: eu tenho um Objeto Pai e outro objeto Filho, o Pai tem uma lista de filhos, na query eu estou fazendo o seguinte:
from Pai p, Filho f, where f.paiId = p.id........
até ai tudo blz, a query é gerada e os objetos são trazidos, porem qdo vou pegar o retorno de query.list() ele não esta me retornando uma lista do tipo Pai, ele retorna um Object, e ja ate tentei fazer o Cast, mas não rola…alguem sabe o q pode ser ?
Você pode pegar por array de Object, mas neste seu caso, acredito que o caminho adotado não é o ideal, você deve ter no Pai um Set de Filho, assim na sua select você só vai trazer o Pai, e nele, ai sim, acessar a lista de Filhos.
T
tiagogn
o codigo é assim:
....
StringsqlQuery="from Pai p, Filho f where f.paiId = p.id.......demais condições! ";Queryquery=getSession().createQuery(sqlQuery);returnquery.list();
q query funciona blz, traz os registros certos, eu vejo isso pelo log do hibernate e pela query gerada, porem esse retorno query.list() não me traz uma lista de objetos do tipo Pai.
T
tiagogn
isso mesmo Mauro, porem dentro da minha clausa where tenho algumas condições impostas sobre a classe filho, por isso ela tb esta no select…e sobre esse Array de objects, teria como transforma-lo na classe Pai ?
E você quer buscar todos os estados, cuja as cidades iniciem com P
StringBuffer sql = new StringBuffer();
sql.append("SELECT e FROM Estados e ");
sql.append("WHERE e.cidades.descricao LIKE 'P%' ");
Query q = getSession().createQuery(sql.toString());
List<Estados> list = q.list();
Viu como no WHERE eu referenciei a outra tabela sem precisar colocar ela no SELECT ? Desta forma, você vai ter um List do Objeto Pai, e se quiser acessar a lista de Filhos, é só ir pelo Pai.
T
tiagogn
Mauro…valeu cara brigadão, era isso mesmo funcionou aqui perfeito.
Obrigado!
Ate+
P
Paulo_Silveira
Tiago, da primeira maneira que voce fez, ele devolve uma lista de array de Object, sendo que na posicao 0 tem Pai e na posicao 1 tem Filho
Mas nesse caso a solucao do Mauro se adequa bem melhor