Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Busca não retorna nada

Assim como o amigo citou em outro post eu fiz exatamente igual o professor fez, fui testar e não retornava nada, daí copiei o código da descrição da aula e ainda assim não retorna nada.

    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> categoriaPath = root.join("categorias").<Integer> get("id");
            Path<Integer> lojaPath = root.<Loja> get("loja").<Integer> get("id");

            List<Predicate> predicates = new ArrayList<Predicate>();

            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();

    }

O hibernate está montando a seguinte query, eu tentei executá-la mas retorna "vazio".

Query:

select produto0_.id as id1_2_, produto0_.descricao as descrica2_2_, produto0_.linkDaFoto as linkDaFo3_2_, produto0_.loja_id as loja_id6_2_, produto0_.nome as nome4_2_, produto0_.preco as preco5_2_ from Produto produto0_ inner join Produto_Categoria categorias1_ on produto0_.id=categorias1_.Produto_id inner join Categoria categoria2_ on categorias1_.categorias_id=categoria2_.id where produto0_.nome like ?

Tentativa de executar a query acima:

MariaDB [(none)]> use projeto_jpa;
Database changed
MariaDB [projeto_jpa]>
MariaDB [projeto_jpa]> select produto0_.id as id1_2_, produto0_.descricao as descrica2_2_, produto0_.linkDaFoto as linkDaFo3_2_, produto0_.loja_id as loja_id6_2_, produto0_.nome as nome4_2_, produto0_.preco as preco5_2_ from Produto produto0_ inner join Produto_Categoria categorias1_ on produto0_.id=categorias1_.Produto_id inner join Categoria categoria2_ on categorias1_.categorias_id=categoria2_.id where produto0_.nome like '%curso%';
Empty set (0.00 sec)

MariaDB [projeto_jpa]> select produto0_.id as id1_2_, produto0_.descricao as descrica2_2_, produto0_.linkDaFoto as linkDaFo3_2_, produto0_.loja_id as loja_id6_2_, produto0_.nome as nome4_2_, produto0_.preco as preco5_2_ from Produto produto0_ inner join Produto_Categoria categorias1_ on produto0_.id=categorias1_.Produto_id inner join Categoria categoria2_ on categorias1_.categorias_id=categoria2_.id where produto0_.nome like 'curso';
Empty set (0.00 sec)

MariaDB [projeto_jpa]>

Alguém pode me ajudar?

3 respostas
solução!

Mas ta tudo certo ! no Banco tem dados ?

Sim, inclusive quando eu faço a aula anterior usando JPQL funciona.

Elan,

Você estava correto, não sei pq os produtos sumiram do DB, vai entender!