estou aprendendo a trabalhar com Criteria e possuo uma duvida,
Já entendi o que é JPQL, proximo passo estou assistindo umas aulas de Criteria, no caso esse criteria é do JPA?
Segue um exemplo:
@Test
public void carrosComValorAcimaDaMedia(){
CriteriaBuilder builder = manager.getCriteriaBuilder();
CriteriaQuery<Servico> criteriaQuery = builder.createQuery(Servico.class);
Subquery<Double> subquery = criteriaQuery.subquery(Double.class);
Root<Servico> servico = criteriaQuery.from(Servico.class);
Root<Servico> servSub = subquery.from(Servico.class);
subquery.select(builder.avg(servSub.<Double>get("valor"))); //media da minha subQuery
criteriaQuery.select(servico);
criteriaQuery.where(builder.greaterThanOrEqualTo(servico.<Double>get("valor"),subquery )); // Na minha query principal eu quero, o valor seja maior ou igual que o resultado da subquery que vou fazer.
TypedQuery<Servico> query = manager.createQuery(criteriaQuery);
List<Servico> servicos = query.getResultList();
for (Servico s: servicos) {
System.out.println(s.getCarro().getPlaca() + " - " +s.getCarro().getModeloCarro().getNome());
}