Ao finalizar a tarefa da aula 3, tentei fazer a pesquisa conforme o professor mas minha pesquisa não retorna nada.
Achando que alguma coisa poderia estar errada em meu código copiei o que estava na transcrição do vídeo e o problema continuou.
Alguém tem ideia se algo mudou desde o vídeo na implementação do Criteria API que seja crucial para o funcionamento?
De qualquer jeito, segue código:
public List<Produto> getProdutos(String nome, Integer categoriaId, Integer lojaId) {
        CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
        CriteriaQuery<Produto> query = criteriaBuilder.createQuery(Produto.class);
        Root<Produto> root = query.from(Produto.class);
        Path<String> nomePath = root.<String>get("nome");
        Path<Integer> lojaPath = root.<Loja>get("loja").<Integer>get("id");
        Path<Integer> categoriaPath = root.join("categorias").<Integer>get("id");
        List<Predicate> predicates = new ArrayList<>();
        if (!nome.isEmpty()) {
            Predicate nomeIgual = criteriaBuilder.like(nomePath, "%" + nome + "%");
            predicates.add(nomeIgual);
        }
        if (categoriaId != null) {
            Predicate categoriaIgual = criteriaBuilder.equal(categoriaPath, categoriaId);
            predicates.add(categoriaIgual);
        }
        if (lojaId != null) {
            Predicate lojaIgual = criteriaBuilder.equal(lojaPath, lojaId);
            predicates.add(lojaIgual);
        }
        query.where((Predicate[])predicates.toArray(new Predicate[0]));
        TypedQuery<Produto> typedQuery = em.createQuery(query);
        return typedQuery.getResultList();
    } 
            