Sum no hibernate?  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
phstc
JavaGuru

Membro desde: 13/04/2004 12:22:22
Mensagens: 200
Localização: São Paulo, SP
Offline

Pessoal,

Estou com dúvidas, numa implementação, vou mostar o problema, vejam qual caminho é mais performático.

>>Problema<<

EntidadeA possui um List populado com EntidadeB (exemplo, tabela Pai e tabela Filho, 0..*)

Tenho que exibir o total gasto com mesado do(s) filho(s)

|Nome Pai| |Outros dados do Pai| |Total Gasto com mesada|

>>Soluções<<

1 - Posso carregar Pai e todos seus filhos, faço uma iteração na lista de filhos e vou somando a mesada.
2 - Coloco um atributo BigDecimal totalMesada no pai, antes de exibi-lo faço um HQL


-------------//-------------//-------------//-------------

Tem outras sugestões? Qual é melhor?
[Email]
faroestecaboclo
Thread.start()
[Avatar]

Membro desde: 22/08/2006 14:28:55
Mensagens: 35
Offline

cara... se as informações q vc quer são apenas essas aew:
|Nome Pai| |Outros dados do Pai| |Total Gasto com mesada|

e não precisa detalhar os filhos, então não tem pq buscá-los.
faça esse hql pra trazer so o q vc precisa,... de uma vez so.

se for d um Pai só, faça esse hql q vc mandou... se for todos os pais, com seus respectivos totais de mesada, faz o HQL usando group by.



só usei o left join pra trazer tbm os casos q o pai não tem filhos. se não vc pode usar diretamente o join implicito:




Isso vai retornar uma coleção de Objects[] (vetor mesmo), onde cada object vai ser: object[0] - nome do pai, object[1] - idade do pai e object[2] - soma das mesadas.

Se preferir, pode tb criar um Objeto pra armazenar esses valores. tipo, um MesadaVO. dae vc faz assim:



q o hibernate retornará uma lista de MesadaVO instanciadas bunitinho.
nesse caso, claro, q vc terá q ter um construtor com esta assinatura q está usando no VO (String nome, int idade, BigDecimal mesada).
[WWW]
phstc
JavaGuru

Membro desde: 13/04/2004 12:22:22
Mensagens: 200
Localização: São Paulo, SP
Offline

Animal cara, valeu pacas! Vou usar a opção do Left Join, atende perfeitamente. Não é necessária para o caso, mas achei legal o lance de dar new Object na instrução select!

Brigadão!
[Email]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team