2012-06-06 15 views
21

¿Es posible tener un me gusta en una cláusula where en una consulta con nombre? Estoy tratando de hacer lo siguiente, pero estoy haciendo excepcionesLlamada con nombre en donde en la cláusula

@NamedQuery(name = "Place.getPlaceForCityAndCountryName", 
query = "SELECT p FROM Place p WHERE " + 
     "lower(p.city) like :city and " + 
     "lower(p.countryName) like :countryName"); 

He intentado añadir% como lo haría en SQL normal, pero conseguir excepciones compilación.

Cualquier apuntador muy apreciado!

Gracias

+1

¿Qué pasa si se toma la segunda como de la función inferior() :) Como – Davos555

+0

@ Davos555 puntos, hay un paréntesis y falta una cita: '" lower (p.countryName) like: countryName ");' –

+0

sí, gracias. Copié esto de un ejemplo más complicado y no lo cambié correctamente. Voy a actualizar la pregunta ahora – RNJ

Respuesta

40

no se puede tener el% en el NamedQuery, pero que puede tener en el valor asignado al parámetro.

Como en:

String city = "needle"; 
query.setParamter("city", "%" + city + "%"); 
+0

funciona bien. Gracias esej! – RNJ

+0

¡agradable! ¡Gracias! : D – Fritz

2

También puede utilizar la función CONCAT

@NamedQuery(name = "Place.getPlaceForCityAndCountryName", 
    query = "SELECT p FROM Place p WHERE " + 
     "lower(p.city) like CONCAT(:city,'%')"); 
2
@Query("select c from Curso c where c.descripcion like CONCAT(:descripcion,'%')") 

List<Curso> findByDescripcionIgnoreCase(@Param("descripcion") String descripcion); 
+1

¡Bienvenido a Stack Overflow! Si bien este código puede responder a la pregunta, proporcionar un contexto adicional con respecto a por qué y/o cómo responde este código a la pregunta mejora su valor a largo plazo. Se desaconsejan las respuestas de solo código. – Ajean

Cuestiones relacionadas