Jump to content
Wikipedia The Free Encyclopedia

Jakarta Persistence Query Language

From Wikipedia, the free encyclopedia
This article includes a list of references, related reading, or external links, but its sources remain unclear because it lacks inline citations . Please help improve this article by introducing more precise citations. (June 2010) (Learn how and when to remove this message)
Jakarta Persistence Query Language
OS Cross-platform
Websiteeclipse-ee4j.github.io/jakartaee-tutorial/#the-jakarta-persistence-query-language
Influenced by
SQL, Hibernate

The Jakarta Persistence Query Language (JPQL; formerly Java Persistence Query Language) is a platform-independent object-oriented query language [1] : 284, §12  defined as part of the Jakarta Persistence (JPA; formerly Java Persistence API) specification.

JPQL is used to make queries against entities stored in a relational database. It is heavily inspired by SQL, and its queries resemble SQL queries in syntax,[1] : 17, §1.3  but operate against JPA entity objects rather than directly with database tables.[1] : 26, §2.2.3 

In addition to retrieving objects (SELECT queries), JPQL supports set based UPDATE and DELETE queries.

Examples

[edit ]

Example JPA Classes, getters and setters omitted for simplicity.

@Entity
publicclass Author{
@Id
privateIntegerid;
privateStringfirstName;
privateStringlastName;

@ManyToMany
privateList<Book>books;
}

@Entity
publicclass Book{
@Id
privateIntegerid;
privateStringtitle;
privateStringisbn;

@ManyToOne
privatePublisherpublisher;

@ManyToMany
privateList<Author>authors;
}

@Entity
publicclass Publisher{
@Id
privateIntegerid;
privateStringname;
privateStringaddress;

@OneToMany(mappedBy="publisher")
privateList<Book>books;
}

Then a simple query to retrieve the list of all authors, ordered alphabetically, would be:

SELECTaFROMAuthoraORDERBYa.firstName,a.lastName

To retrieve the list of authors that have ever been published by XYZ Press:

SELECTDISTINCTaFROMAuthoraINNERJOINa.booksbWHEREb.publisher.name='XYZ Press'

JPQL supports named parameters, which begin with the colon (:). We could write a function returning a list of authors with the given last name as follows:

importjavax.persistence.EntityManager;
importjavax.persistence.TypedQuery;
...
publicList<Author>getAuthorsByLastName(StringlastName){
StringqueryString="SELECT a FROM Author a "+
"WHERE a.lastName IS NULL OR LOWER(a.lastName) = LOWER(:lastName)";
TypedQuery<Author>query=getEntityManager().createQuery(queryString,Author.class);
query.setParameter("lastName",lastName);
returnquery.getResultList();
}

Hibernate Query Language

[edit ]

JPQL is based on the Hibernate Query Language (HQL), an earlier non-standard query language included in the Hibernate object-relational mapping library.

Hibernate and the HQL were created before the JPA specification. As of Hibernate 3 JPQL is a subset of HQL.

Citations

[edit ]

References

[edit ]

See also

[edit ]
[edit ]

AltStyle によって変換されたページ (->オリジナル) /