Galera seguinte, quero que minha consulta no Hibernate responda todos os PAIS com ou sem filhos e que os filhos estejam em uma determinada situacao para isso faço o count
ja fiz a consulta direto no banco e funciona blz so que ao montar no HIBERNATE ele gera esta query que so me retorna os pais que os filhos tem a determinada situação os demais que deveriam retornar com ZERO não retornam…
Em primeiro lugar, quando voce diz que quer todos os pais com ou sem filhos isso é o mesmo que: pesquisar todos os pais, independente dos filhos! Eu faria uma HQL da seguinte maneira:
Quando escrevo pai.filho = filho significa que estou comparando dois objetos com o metodo equals, onde eles serao iguais somente se os valor das chaves primarias forem iguais (no caso em que trabalho eu comparo os ids).
O problema de nao retorar os pais com ZERO filhos é que a query que voce estamos fazendo filtra apenas os pais que possuem algum filho, basta ver a amarracao pai.filho = filho.
Uma alternatica é fazer uma query que retorna uma lista de pais e depois usar um loop for-each para iterar essa lista e pegar somente os pais que possuem filhos em determinada situacao!
Ate
RDSILVA
Então mas fazendo assim ele conta somente os caras com filhos em uma situacao
que quero que se existir PAI com filho e não esteja nesta situacao informada ele respoderia o contador com ZERO…
isso que vc me disse eu fiz mas ele retorna o que descrevi acima.
Valeu
Vini_Fernandes
Bom, nao entendi o que voce disse, mas codificando minha alternativa, teremos:
List<Pai>resultado=session.createQuery("pai from Pai pai").list();List<Pai>listaDePais=newArrayList<Pai>();for(Paipai:resultado)/** verificamos primeiro se o pai tem filho (no caso estou supondo apenas um filho), * depois verificamos a situacao desse filho*/if(pai.getFilho()!=null&&(pai.getFilho().getSituacao().equals("uma situacao desejada")||pai.getFilho().getSituacao().equals("outra situacao desejada")))listaDePais.add(pai);
Veja que o tamanho da listaDePais é o count que voce deseja!