Sunteți pe pagina 1din 3

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 especificacin 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 Cdigo: [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 patrn Cdigo: [Seleccionar]
SELECT [<resultado>] [FROM <entidad(es)>] [WHERE <filtro>] [GROUP BY <agrupacin>] [HAVING <condicin>] [ORDER BY <orden>]

Las palabras clave "en la consulta se muestran en MAYSCULAS distinguen entre maysculas y minsculas. Entidad: En el ejemplo usamos Persona p y luego accedemos a los atributos con el alias p. La clase Persona es la Entidad Parmetros de Entrada

En las consultas JPQL es conveniente pasar como parmetros lo que no se tiene que definir en la misma consulta para diferentes valores. Veamos dos ejemplos Parmetros con nombre: Cdigo: [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);

Parmetros numerados: Cdigo: [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 parmetros que llevan el prefijo: (dos puntos) para identificarlos como un parmetro y utilizan ese nombre al llamar al metodo query.setParameter (). En el segundo caso tenemos los parmetros que llevan el prefijo ? (Signo de interrogacin ) y se numeran a partir del 1. A continuacin, utilizamos el numero de la posicin 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 pgina web o un formulario y quiere paginar los resultados de algunas bsquedas, es posible que desee obtener los resultados de una consulta en bloques de 20, con resultados 0-19 en la primera pgina, a continuacin, 20-39, etc . Se puede facilitar esto de la siguiente manera Cdigo: [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. Ejecucin de consultas Hay dos maneras de ejecutar una consulta JPQL. Cuando usted sabe que devolver 0 o 1 resultados. Cdigo: [Seleccionar]
Object resultado = query.getSingleResult();

Sin embargo, si se sabe que la consulta devolver varios resultados, o simplemente no se sabe entonces podra llamarse

Cdigo: [Seleccionar]
List results = query.getResultList();

S-ar putea să vă placă și