Erro ao filtrar pesquisa Dinamica com Campo Long

Olá, estou tentando fazer uma consulta dinamica no banco de dados, mas tenho um campo “Código” que é do tipo Long, mas ela esta me retornando com erro a pesquisa, o erro é " java.lang.IllegalArgumentException: Parameter value [133%] did not match expected type [java.lang.Long (n/a)]"

 public List<Produto> filtro(String nome, String apelido,String codigo) {
   
    
    EntityManager em = ConnectionFactory.getEntityManager();
    String hql = "select p from Produto p where p.nome like :nome ";
    if(apelido !=null){
        hql += "and p.apelido like :apelido ";
    }if(codigo != null){
        hql += "and p.codigo like :codigo";
    }
   

    TypedQuery<Produto> typedQuery = em.createQuery(hql, Produto.class);
    typedQuery.setParameter("nome", nome+"%");
    typedQuery.setParameter("apelido",apelido+"%");
    typedQuery.setParameter("codigo",Long.valueOf(codigo)+"%");
  
                                                                       
    return typedQuery.getResultList();
}

O long não pode ter o %. Se queres ter o like tens de fazer cast para char.

como seria, poderia exemplificar ?

Com Hibernate penso que será algo assim

hql += "and cast(p.codigo as string) like :codigo";
1 curtida

Isso meu parceiro, vc me ajudou muito vlw, Abraços.

1 curtida