factograf
KK
Sign in

Java Persistence Query Language

All data from the card 2
Бұған ықпал етті
SQL
Операциялық жүйесі
Cross-platform

Java Persistence Query Language (JPQL) объектке бағытталған платформаға байланысы жоқ мәліметтер базасының тілі.

Мысалдар

@Entity
public class Publisher {
    @Id
    private Integer id;
    private String name;
    private String address;

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

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

SELECT a FROM Author a ORDER BY a.firstName, a.lastName

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

SELECT DISTINCT a FROM Author a INNER JOIN a.books b WHERE b.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:

import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.apache.commons.lang.StringUtils;

...

@SuppressWarnings("unchecked")
public List<Author> getAuthorsByLastName(String lastName) {
    String queryString = "SELECT a FROM Author a " +
                         "WHERE:lastName IS NULL OR LOWER(a.lastName) =:lastName";
    Query query = getEntityManager().createQuery(queryString);
    
    query.setParameter("lastName", StringUtils.lowerCase(lastName));
    return query.getResultList();
}

Hibernate Query Language

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.

Тағы қараңыз

Сыртқы сілттемелер

  • Full Query Language Syntax from The Java EE 5 Tutorial
  • JPA Queries and JPQL - a chapter of the ObjectDB Manual
  • Type safe Hibernate (HQL) query engine - TorpedoQuery Мұрағатталған 28 қазанның 2012 жылы.

Read next

In 10 languages

Text from Wikipedia, CC BY-SA 4.0 · Source article