Estou tentando implementar o criteria em um sistema que possuo junto com o JPA, nele quero que me que me passe as seleções da minha tabela ordenada, e com o valor dos grupos a qual os produtos ordenados são iguais sejam somados. Infelizmente não consegui no JPQL realizar essa ultima parte e agora estou fazendo com o criteria, mas como faria essa soma?
String mapa = "select sum(p.pesoFinal) from Peso p join fetch p.mapa m where m.status = :cStatus order by p.receita.produto.categoria, p.receita.materia.id";
`
Esse de cima seria como ficaria o codigo, mas por algum motivo essa query não executa, se tirar o sum e colocar apenas o "p" ele funciona perfeitamente, mas colocando para selecionar o atributo ao inves da classe toda dar erro.
String mapa = "select new br.com.exemplo.Peso(p.id, p.receita, sum( p.pesoFinal) from Peso p join fetch p.mapa m where m.status = :cStatus order by p.receita.produto.categoria, p.receita.materia.id";
`
Aqui foi outro forma que tentei fazer funcionar, mas também não obtive sucesso
CriteriaBuilder crite = em.getCriteriaBuilder();
CriteriaQuery<Peso> query = crite.createQuery(Peso.class);
Root<Peso> root = query.from(Peso.class);
Path<String> pathStatus = root.<Mapa>get("mapa").<String>get("status");
Predicate predicateStatus = crite.equal(pathStatus, solicitado);
Expression<String> categoria = root.<Receita>get("receita").
<Produto>get("produto").<String>get("categoria");
Expression<Integer> materia = root.<Receita>get("receita").
<Materia>get("materia").<Integer>get("id");
query.select(root).where(predicateStatus).orderBy(crite.asc(categoria), crite.asc(materia));
Aqui seria o codigo pelo Criteria, mas ainda não sei como somar o valor de "pesoFinal"