Consultas SELECT en JPQL: [Seleccionar]

Java Persistence Query Language (JPQL) « : julio 08, 2010, 12:37:17 pm » El Java Persistence Query Language (JPQL) es u

Views 148 Downloads 0 File size 131KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Java Persistence Query Language (JPQL)

« : julio 08, 2010, 12:37:17 pm » El Java Persistence Query Language (JPQL) es un lenguaje de consulta independiente de plataforma orientado a objetos definidos como parte de la especificación Java Persistence API. JPQL se utiliza para hacer consultas en entidades almacenadas en basesde datos relacionales. Está fuertemente inspirado en SQL, y sus consultas se asemejan a la sintaxis de las consultas SQL, solo que operan contra objetos entidad JPA en lugar de hacerlo directamente con las tablas de base de datos. Consultas SELECT en JPQL Código: [Seleccionar] Query = em.createQuery("SELECT FROM Persona p WHERE p.apellido = 'Bivanco'"); List results = (List) q.getResultsList();

Esto encuentra todos los objetos "Persona" con el apellido "Bivanco". Para ello instancia un objeto Query, a partir del metodo createQuery del EntityManager em, pasando como parametro un String con la consulta JPQL Sintaxis SELECT En las consultas JPQL se define la consulta en una sola cadena, que define el resultado, la(s) entidad(es), el filtro, cualquier tipo de agrupaciones, y el orden. Esta cadena tiene que seguir el siguiente patrón Código: [Seleccionar] SELECT [] [FROM ] [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ]

Las palabras clave "en la consulta se muestran en MAYÚSCULAS distinguen entre mayúsculas y minúsculas. Entidad: En el ejemplo usamos Persona p y luego accedemos a los atributos con el alias p. La clase Persona es la Entidad Parámetros de Entrada

En las consultas JPQL es conveniente pasar como parámetros lo que no se tiene que definir en la misma consulta para diferentes valores. Veamos dos ejemplos Parámetros con nombre: Código: [Seleccionar] Query q = em.createQuery("SELECT p FROM Persona p WHERE p.apellido = :surname AND o.nombre = :forename"); q.setParameter("apellido", theSurname); q.setParameter("nombre", theForename);

Parámetros numerados: Código: [Seleccionar] Query q em.createQuery("SELECT p FROM Persona p WHERE p.apellido = ?1 AND p.nombre = ?2"); q.setParameter(1, theSurname); q.setParameter(2, theForename);

Así que en el primer caso tenemos los parámetros que llevan el prefijo: (dos puntos) para identificarlos como un parámetro y utilizan ese nombre al llamar al metodo query.setParameter (). En el segundo caso tenemos los parámetros que llevan el prefijo ? (Signo de interrogación ) y se numeran a partir del 1. A continuación, utilizamos el numero de la posición al llamar query.setParameter (). Rango de los resultados Con JPQL se puede seleccionar el rango de resultados a devolver. Por ejemplo, si usted tiene una página web o un formulario y quiere paginar los resultados de algunas búsquedas, es posible que desee obtener los resultados de una consulta en bloques de 20, con resultados 0-19 en la primera página, a continuación, 20-39, etc . Se puede facilitar esto de la siguiente manera Código: [Seleccionar] Query q = em.createQuery("SELECT p FROM Person p WHERE p.age> 20"); q.setFirstResult(0); q.setMaxResults(20);

Así que con esta consulta se obtienen resultados desde el 0 hasta el 19 inclusive. Ejecución de consultas Hay dos maneras de ejecutar una consulta JPQL. Cuando usted sabe que devolverá 0 o 1 resultados. Código: [Seleccionar] Object resultado = query.getSingleResult();

Sin embargo, si se sabe que la consulta devolverá varios resultados, o simplemente no se sabe entonces podría llamarse

Código: [Seleccionar] List results = query.getResultList();