En mi Hibernate JPA código de Ejemplo..

public List<AttendeesVO> addAttendees(String searchKeyword) {
    TypedQuery<AttendeesVO> query = entityManager.createQuery(" select at from AttendeesVO at where at.user.firstName LIKE :searchKeyword",AttendeesVO.class);
    query.setParameter("searchKeyword", searchKeyword+"%");
    return query.getResultList();
}

se está trabajando muy bien cuando se da toda la Cadena firstName=Narasimham

Pero es que no funciona cuando le doy a cualquier personaje de Narasimham yo.e a o n

Realidad mi pensamiento es que le estoy dando Like operador con % % por lo que el trabajo de cualquier carácter de la Cadena dada..

3 Comentarios

  1. 53

    está utilizando query.setParameter("searchKeyword", searchKeyword+"%");

    lugar de query.setParameter("searchKeyword", "%"+searchKeyword+"%");

    primero se devuelven filas para Narasimham N Na Nar Nara etc.

  2. 18

    Pero es que no funciona cuando le doy a cualquier personaje de Narasimham yo.e un
    o n

    Porque usted está haciendo caso sensibles de búsqueda. Trate de N, Na, Nar lugar. Si desea realizar una insensible a mayúsculas-minúsculas búsqueda trate de usar upper o lower. como

    entityManager.createQuery("select at from AttendeesVO at where lower(at.user.firstName) LIKE lower(:searchKeyword)",AttendeesVO.class);  

    Realidad mi pensamiento es que le estoy dando Como operador con % %

    searchKeyword+"%" significa que los valores de retorno que comienza con searchKeyword.

    "%"+searchKeyword+"%" significa que los valores de retorno que contiene searchKeyword.

    Decidir según su requisito.

  3. 1

    Me gustaría añadir mi voz a la de @ssk utilizar dos % antes y después de la palabra clave.
    O creo que es la solución más profesional si usted configuró en la propia consulta como esta :

    public List<AttendeesVO> addAttendees(String searchKeyword) {
        TypedQuery<AttendeesVO> query = entityManager.createQuery(" select at from AttendeesVO 
        at where at.user.firstName LIKE CONCAT('%',:searchKeyword,'%')",AttendeesVO.class);
        query.setParameter("searchKeyword", searchKeyword);
        return query.getResultList();
    }

    porque el ‘%’ su parte de la consulta no de los parámetros de lo que usted puede llenar más tarde

    La función CONCAT() añade dos o más expresiones juntos.
    https://www.w3schools.com/sql/func_mysql_concat.asp

Dejar respuesta

Please enter your comment!
Please enter your name here