Hay un artilugio para poder usar like en campos enteros , es concatenando una cadena vacia al entero esto lo combierte el campo a cadena y puedo usar el Like normalmente.
La fucion en jpql quedaria: CONCAT(campoint,'');
EJ:
return em.createQuery("select p from Localidad p Where UPPER(p.nombre) Like :texto " + " OR UPPER(CONCAT(p.codigo,'')) Like :texto order by p.nombre")
.setParameter("texto", texto.toUpperCase() +'%').getResultList();
Suscribirse a:
Enviar comentarios (Atom)
2 comentarios:
No entiendo cómo puede funcionar algo así. Me refiero a cuando haces
setParameter("texto", texto.toUpperCase() +'%')
No se supone que cuando das valor a un parámetro, éste es escapado por el driver de JDBC? Dicho de otra manera, qué impide que, si el texto viene del usuario, éste no pueda contener el wildcard "%" al principio, por ejemplo, y con ello el usuario desmonte el tipo de consulta que tú quieres hacer?
No entiendo cómo puede funcionar algo así. Me refiero a cuando haces
setParameter("texto", texto.toUpperCase() +'%')
No se supone que cuando das valor a un parámetro, éste es escapado por el driver de JDBC? Dicho de otra manera, qué impide que, si el texto viene del usuario, éste no pueda contener el wildcard "%" al principio, por ejemplo, y con ello el usuario desmonte el tipo de consulta que tú quieres hacer?
Publicar un comentario