JPA - Como usar COUNT

Boa noite pessoal.
Eu estou enfrentando o seguinte problema.

Imaginem que eu tenha uma tabela Multa, consigo inserir, deletar, atualizar, pesquisar … normalmente.

Mas tem momentos em que preciso saber quantas multas do tipo X eu tenho. Como se faz isso usando JPA ???

A query normal seria… SELECT tipo as Tipo ,COUNT(*) as Total FROM Multa Group By tipo;

Esta query resultaria:

Tipo Total Estadual 2 Municipal 1 Nacional 3

No caso do JPA toda consulta resulta uma lista de objetos né, mais como que eu vou pegar essa resultado de cima…se não tenho um objeto que tenha o atributo Total ???
Outa coisa, não fiz ainda, mas quando for fazer joins… o resultado vai ser uma lista de objetos de que entidade, porque estaremos unindo informações de duas entidades certo ?

Valeu por qualquer ajuda ai.
Abraços.

select count(m) from Multa m

Armazene o retorno da consulta em um List<Object[]> e então poderá pegar os dados através dos indices do array.Isso vale também para quando estiver fazendo join e ter vários atributos na clásula select.

Sua pergunta é bem comum entre os iniciantes (e muita gente que trabalha um bom tempo com JPA).
Para resolver seu problema, uma opção é você criar uma classe que contenha todos os campos que você precisa.
Por exemplo:

public class meuTransformer{

private Tipo tipo;
private Long total;

public meuTransformer(Tipo tipo, Long total){
this.tipo = tipo;
this.total = total;
}
… getters e setters…

}

Sua consulta:

SELECT NEW meuTransformer(tipo as Tipo ,COUNT(*) as Total) FROM Multa Group By tipo;

Repare que cada coluna da consulta é passada para o construtor da classe meuTransformer.

Pois bem, o resultado será de uma classe conhecida e não a bizarrice de um array de objetos.

Para esse tipo de consulta, você pode criar um transformer genérico, mas não tenho tempo de colocar ele aqui para você.

Pesquise na Internet que você encontrará vários exemplos, melhores do que eu meu, até porque, como disse, meu tempo é curto.

OBS: já que você usa JPA, experimente meu conversor de Entiidades genérico: http://www.guj.com.br/posts/list/220692.java

Abraço

E ai Flavio … tudo bem ?

Valeu pela ajuda.

Sobre o seu conversor generico eu ja tinha visto, porém não consegui implementa-lo. Vou dar mais uma olhada pra ver se consigo.

Valeu =]

Se tiver dúvidas ou problemas, poste lá no tópico que eu tento responder.

Abraço