Bom dia a todos, estou aprendendo agora a utilizar o criteria api, tenho que fazer uma consulta que busca em três classe o resultado final, já começei mas axo, ou melhor tenho certeza q está faltando dizer ao metodo o qu ele tem q fazer. Esta busca precisa pegar o total de resultado, alguem pode ajuda.
public List<Resultado> findresultados(Comite comite, Municipio municipio, Coligacao coligacao, Short exercicio) {
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery();
Root<Resultado> resultado = cq.from(Resultado.class);
List<Predicate> predicados = new ArrayList<Predicate>();
if (comite != null) {
predicados.add(cb.equal(resultado.get("comite"), comite));
}
if (municipio != null) {
predicados.add(cb.equal(julgamento.get("municipio"), municipio));
}
if (coligacao != null) {
predicados.add(cb.equal(julgamento.get("partido"), partido));
}
if (exercicio != null) {
predicados.add(cb.equal(julgamento.get("exercicio"), exercicio));
}
cq.where(cb.and(predicados.toArray(new Predicate[]{})));
return getEntityManager().createQuery(cq).getResultList();
será se estou indo no rumo certo?
obrigado
Só pra saber, você está usando Criteria do JPA porque quer aprender? Ou é em um projeto real mesmo? Porque ela não é muito recomendada (Claro que se quiser usar pode usar, cada um usa o que preferir), mas eu particularmente acho ela muito verbosa, e prefiro fazer as coisas com JPQL.
E em relação a sua dúvida, não entendi ela, cara… O que que você precisa buscar? Tem como explicar melhor?
projeto real, preciso desenvolver um modulo de consulta para o sistema web que ja existe, to usando o criteria api do JPA. Quero encontrar uma forma melhor de buscar o total de resultados(aprovados, desaprovados, aprovados com ressalvas) o banco já existe certo. As classes foram geradas pelas tabelas do banco de dados, ja tenho a tela de consulta no view, ja fiz os beans, agora falta implementar a consulta no manager, onde preciso buscar o total de resultado. as classes são(Comite, Resultado, Coligacao, Municipio), fui orientado para usar criteria.
Objetivo: mostrar o total de resultado aprovados, reprovados, aprovados com ressalvas, sendo que preciso buscar isso nestas tabelas do banco dentro meu meu DAO,
Desculpa se não fui claro
public List<Resultado> findresultados(Comite comite, Municipio municipio, Coligacao coligacao, Short exercicio) {
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery();
Root<Resultado> resultado = cq.from(Resultado.class);
List<Predicate> predicados = new ArrayList<Predicate>();
if (comite != null) {
predicados.add(cb.equal(resultado.get("comite"), comite));
}
if (municipio != null) {
predicados.add(cb.equal(resultado.get("municipio"), municipio));
}
if (coligacao != null) {
predicados.add(cb.equal(resultado.get("coligacao"), coligacao));
}
if (exercicio != null) {
predicados.add(cb.equal(jresultado.get("exercicio"), exercicio));
}
cq.where(cb.and(predicados.toArray(new Predicate[]{})));
return getEntityManager().createQuery(cq).getResultList();
os if sao para quando o usuario fazer a seleçao de algum campo da tela de conslulta
[quote=digaoneves]Só pra saber, você está usando Criteria do JPA porque quer aprender? Ou é em um projeto real mesmo? Porque ela não é muito recomendada
[/quote]
Mal recomendada não,ela é PORCA mesmo 
Prefiro mil vezes as Restrictions do Hibernate.
[quote=raf4ever][quote=digaoneves]Só pra saber, você está usando Criteria do JPA porque quer aprender? Ou é em um projeto real mesmo? Porque ela não é muito recomendada
[/quote]
Mal recomendada não,ela é PORCA mesmo 
Prefiro mil vezes as Restrictions do Hibernate.[/quote]
e como ficaria no JPQL?