Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Criteria Having

Como fazer um group by com having no criteria?

4 respostas

Oi João, segue o exemplo meio solto, mas só para mostrar a funcionalidade:

CriteriaBuilder cb = em.getCriteriaBuilder();

CriteriaQuery<Object[]> query = cb.createQuery(Object[].class);

Root<Departamento> root = query.from(Departamento.class);

Join<Departamento,Professor> professores = root.join("professores");

query.multiselect(root.get("nome"),cb.count(professores)).groupBy(root.get("nome"));

Eu acho a api do criteria bem confusa, em geral acho que vale bem mais a pena mandar bala no JPQL direto.

Oi Alberto, se entendi bem esse código demonstra apenas um group by, gostaria de saber se é possível efetuar um having com o criteria. Ou algum tipo de where após o agrupamento ser realizado.

solução!
query.multiselect(root.get("nome"),cb.count(professores)).groupBy(root.get("nome")).having(cb.equal(root.get("tempoDeCasa"),2));

Legal!!! Obrigado =D