4
respostas

método buscaPorNome() voltando lista vazia

Pessoal, o método buscaPorNome(String nome) da minha aplicação está retornando uma lista vazia quando faço a busca. Copiei a Query igual a do vídeo, já verifiquei e estou escrevendo o nome corretamente . O estranho é que isso só acontece quando tenho 1 elemento na lista. Criei dois elementos e fiz a pesquisa com este segundo elemento e houve retorno. Alguma idéia do que possa ser isso ?

o método está igual ao do vídeo:

    public List<Produto> buscaPorNome(String nome) {

    String jpql = "SELECT p FROM Produto p WHERE p.nome = :nome";
    return em.createQuery(jpql , Produto.class)
            .setParameter("nome",nome)
            .getResultList();
4 respostas

Descobri algo estranho....quando renomiei o produto de "Xiaomi Redmi" para somente "Xiaomi" a busca aconteceu . Alguém sabe o porquê disso ?

Oi Vanderson,

Nessa busca estamos buscando pelo nome exato que esta cadastrado no banco de dados. Pode ser por isso que nao retornou na sua busca.

Da uma conferida se o nome que foi cadastrado foi exatamente o mesmo nome passado como parametro na consulta.

Olá Rodrigo. Foi sim, inclusive eu até pensei nesta possibilidade mesmo e copiei o nome cadastrado e colei na consulta . O que realmente aconteceu é que para a String composta "Xiaomi Redmi" não está ocorrendo a busca.

Vanderson, bom dia.

Para a busca por termo "parcial" o ideal é usar o like do sql, segue o exemplo

String jpql = "SELECT p FROM Produto p WHERE p.nome LIKE '%:productName%'";