Java Persistence Query Language

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 11 april 2015; kontroller kräver 3 redigeringar .
Java Persistence Query Language
Språkklass frågespråk
Framträdde i 2009
Blivit påverkad SQL
Hemsida eclipse-ee4j.github.io/… (  engelska)
eclipse-ee4j.github.io/…

Java Persistence Query Language ( JPQL ) är ett plattformsoberoende objektorienterat frågespråk som är en del av Java Persistence API (JPA)-specifikationen.

JPQL används för att skriva frågor mot enheter lagrade i en relationsdatabas. JPQL liknar SQL på många sätt , men till skillnad från den senare fungerar den på frågor som görs mot JPA-enheter, i motsats till direkta frågor mot databastabeller.

Förutom att få objekt ( SELECT-queries), stöder JPQL frågor baserade på operatorerna UPDATEoch DELETE.

Exempel

Antag att vi har JPA-enheter definierade enligt följande (sätter- och gettermetoderna för egenskaper har utelämnats för enkelhetens skull):

@Entity public class Författare { @Id privat Heltals - id ; privat sträng förnamn ; privat sträng efternamn ; @ManyToMany privat lista < Bok > böcker ; } @Entity public class Bok { @Id privat Heltals - id ; privat strängtitel ; _ privat sträng isbn ; @ManyToOne privat förlagsutgivare ; _ @ManyToMany privat lista < Författare > författare ; } @Entity public class Utgivare { @Id privat Heltals - id ; privat strängnamn ; _ privat strängadress ; _ @OneToMany ( mapdBy = "publisher" ) privat lista < Bok > böcker ; }

Följande fråga returnerar en lista över författare i alfabetisk ordning:

VÄLJ en FRÅN författare en BESTÄLLNING AV en . förnamn , a . efternamn

Begäran om en lista över författare som någonsin publicerats av XYZ Press:

VÄLJ DISTINTERA en FRÅN författare a INNER JOIN a . böcker b VAR b . utgivare . namn = 'XYZ Press'

JPQL stöder namngivna parametrar som börjar med ett kolon (:). En funktion som returnerar en lista över författare med ett givet efternamn kommer att se ut så här:

importera javax.persistence.EntityManager ; importera javax.persistence.Query ; ... @SuppressWarnings ( "unchecked" ) offentlig lista < Author > getAuthorsByLastName ( String efternamn ) { String queryString = "VÄLJ en FRÅN författare a " + "WHERE LOWER(a.lastName) = :efternamn" ; Query query = getEntityManager (). createQuery ( queryString ); fråga . setParameter ( "efternamn" , lastName.toLowerCase ( ) ); returförfrågan . _ getResultList (); }

Hibernate Query Language

JPQL är baserat på Hibernate Query Language (HQL), ett tidigare icke-standardiserat frågespråk som ingår i Hibernate objektrelationell mappningsbibliotek .

Hibernate och HQL skapades före tillkomsten av JPA-specifikationen. JPQL är en delmängd av frågespråket HQL.

Se även

Länkar