Criteria do Hibernate com count(*), sum e group by

Olá pessoal. Estou meio perdido ao fazer uma criteria usando count(*), sum e group by

minha select é a seguinte?

select count(*) as qtde, p.descricao_produto, sum(v.valor_vendido) as valor_produto from veiculos v left join produtos p on v.cod_produto=p.cod_produto where v.novo_usado='N' and v.status='V' group by descricao_produto

já consegui montar a mesma select em JPQL, porem gostaria de usar Criteria.

cheguei a montar a seguinte declaração:

Session session = (Session) em.getDelegate(); Criteria criteria = session.createCriteria(Veiculo.class); criteria.createCriteria("codProduto", "produto", Criteria.LEFT_JOIN); criteria.add(Restrictions.eq("status", "V")); criteria.add(Restrictions.eq("novoUsado", "N")); return criteria.list();

Porem estou perdido em como colocar o count(*), o sum e o group by na mesma Criteria. Deu pra entender?
Alguem pode me dar um help?

Amigo você vai ter que usar Projections, assim você passa a sua Criteria e ele faz o RowCount.

sim eu usaria o

Porem na minha select que eu postei ele me retorna algo como:

QTDE…Descricao…Venda somada por produto
444…Produto 1…40585007,69
91…Produto 2…7471774
580…Produto 3…70947458,44

eu queria fazer minha criteria retornar essas informaçoes tambem do mesmo jeito.

Faz assim amigo

protected int count(Criteria criteria) {
		return ((Number) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
	}
1 curtida