Java Persistence Query Language

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 11 aprilie 2015; verificările necesită 3 modificări .
Java Persistence Query Language
Clasa de limba limbajul de interogare
Aparut in 2009
A fost influențat SQL
Site-ul web eclipse-ee4j.github.io/… ​(  engleză)
eclipse-ee4j.github.io/…

Java Persistence Query Language ( JPQL ) este un limbaj de interogare orientat pe obiecte independent de platformă, care face parte din specificația Java Persistence API (JPA).

JPQL este folosit pentru a scrie interogări împotriva entităților stocate într-o bază de date relațională. JPQL este similar cu SQL în multe feluri , dar spre deosebire de acesta din urmă, operează pe interogări făcute împotriva entităților JPA, spre deosebire de interogările directe împotriva tabelelor bazei de date.

Pe lângă obținerea de obiecte ( SELECT-interogări), JPQL acceptă interogări bazate pe operatorii UPDATEși DELETE.

Exemple

Să presupunem că avem entități JPA definite după cum urmează (metodele setter și getter ale proprietăților au fost omise pentru simplitate):

@Entity public class Author { @Id private Integer id ; private String prenume ; private String lastName ; @ManyToMany private Listă < Carte > cărți ; } @Entity public class Book { @Id privat Integer id ; titlu privat String ; private String isbn ; @ManyToOne editor privat Publisher ; @ManyToMany private Listă < Autor > autori ; } @Entity public class Publisher { @Id private Integer id ; Nume șir privat ; _ adresă String privată ; @OneToMany ( mappedBy = "editor" ) private Listă < Carte > cărți ; }

Următoarea interogare returnează o listă de autori în ordine alfabetică:

SELECTAȚI un FROM Autor o COMANDĂ DE a . prenume , a . numele de familie

Solicitare pentru o listă de autori publicată vreodată de XYZ Press:

SELECTARE DISTINCT a FROM Autor a INNER JOIN a . cărți b UNDE b . editor . nume = 'XYZ Press'

JPQL acceptă parametrii numiți care încep cu două puncte (:). O funcție care returnează o listă de autori cu un nume de familie dat va arăta astfel:

import javax.persistence.EntityManager ; import javax.persistence.Query ; ... @SuppressWarnings ( "nebifat" ) public List < Autor > getAuthorsByLastName ( String lastName ) { String queryString = "SELECTAȚI un autor de la " + "WHERE LOWER(a.lastName) = :lastName" ; Interogare de interogare = getEntityManager (). createQuery ( queryString ); interogare . setParameter ( "nume" , lastName.toLowerCase ( ) ); returnare interogare . getResultList (); }

Hibernate Query Language

JPQL se bazează pe Hibernate Query Language (HQL), un limbaj de interogare anterior, nestandardizat, inclus în biblioteca de cartografiere relațională obiect Hibernate .

Hibernate și HQL au fost create înainte de apariția specificației JPA. JPQL este un subset al limbajului de interogare HQL.

Vezi și

Link -uri