Hibernate Mantiene la detección de

org.hibernate.QueryParameterException: could not locate named parameter [name]

incluso a pesar de que existen. aquí está mi hql

Query query = sess().createQuery("from UserProfile where firstName LIKE '%:name%'").setParameter("name", name);

¿Por qué hibernate mantiene lanzando la excepción? aunque el parámetro de existir?

  • Supongo que usted no necesita esos cupos alrededor de parámetro, esto podría el caso de que tu problema.
InformationsquelleAutor user962206 | 2013-01-24

2 Comentarios

  1. 26

    Debe ser como este:

    Query query = sess().createQuery("from UserProfile where firstName LIKE :name")
                        .setParameter("name", "%"+name+"%");

    En su caso ':name' es real en la cadena de Hibernate buscar. Si usted necesita tener un verdadero parámetro con nombre, usted necesita tener sólo :name.

    Así % debe ser pasado como un valor de :name y Hibernate sustituto :name, con un valor real.

    Nota, que si el valor contiene % y desea que sea una carta real en lugar de comodín, tendrás que escapar de él, aquí es un ejemplo de escaper de clase.

    • ¿Cuál es la diffference entre la Cadena someName = «%»+nombre+»%»; y setParameter(«nombre», «%»+nombre+»%»); y setParameter(«nombre», someName ); ??
    • Hibernate no reconocer que hay un parámetro con nombre, no sabe %:bla sintaxis. Mismo en SQL si intenta escribir LIKE ‘%?’, que no reconoce correctamente. En caso de que usted tiene :nombre – este es un claro parámetro con nombre y especificar %bla como una cadena de base de datos debe buscar. En caso de tener % como un valor, tendrás que escapar de ella.
    • que finalmente se trabajó solo quería tener un entender lo que su diferencia, cualquier enlace para obtener más información acerca de este tema?
    • He tratado de describir con más detalles en la respuesta real. Yo no tengo ningún vínculo particular para compartir, lo siento.
  2. 3

    intentar concatenar usando hql

    "from UserProfile where firstName LIKE '%' || :name || '%'"

    o el uso de CONCAT

    "from UserProfile where firstName LIKE CONCAT('%', :name ,'%')"

Dejar respuesta

Please enter your comment!
Please enter your name here