stringtranslate.com

Язык запросов на сохранение Джакарты

Jakarta Persistence Query Language ( JPQL ; ранее Java Persistence Query Language) — это платформенно-независимый объектно-ориентированный язык запросов [1] : 284, §12,  определенный как часть спецификации Jakarta Persistence (JPA; ранее Java Persistence API).

JPQL используется для выполнения запросов к сущностям, хранящимся в реляционной базе данных. Он во многом вдохновлен SQL , и его запросы напоминают запросы SQL по синтаксису, [1] : 17, §1.3  , но работают с объектами сущностей JPA, а не напрямую с таблицами базы данных. [1] : 26, §2.2.3 

Помимо извлечения объектов ( SELECTзапросов), JPQL поддерживает запросы на основе наборов UPDATEи DELETE.

Примеры

Примеры классов JPA, геттеров и сеттеров опущены для простоты.

@Entity public class Author { @Id private Integer id ; private String firstName ; private String lastName ; @ManyToMany private List <Book> books ; } @Entity public class Book { @Id private Integer id ; private String title ; private String isbn ; @ManyToOne private Publisher publisher ; @ManyToMany private List < Автор > authors ; } @Entity public class Publisher { @Id private Integer id ; private String name ; private String address ; @OneToMany ( mappedBy = " publisher " ) private List <Book> books ; }                                                               

Тогда простой запрос для получения списка всех авторов, отсортированных в алфавитном порядке, будет выглядеть так:

ВЫБРАТЬ ИЗ Автор УПОРЯДОЧИТЬ ПО . имя , . фамилия        

Чтобы получить список авторов, когда-либо опубликованных издательством XYZ Press:

SELECT DISTINCT a FROM Author a INNER JOIN a . books b WHERE b . publisher . name = 'XYZ Press'             

JPQL поддерживает именованные параметры, которые начинаются с двоеточия ( :). Мы могли бы написать функцию, возвращающую список авторов с заданной фамилией, следующим образом:

импорт javax.persistence.EntityManager ; импорт javax.persistence.TypedQuery ;  ...public List < Author > getAuthorsByLastName ( String lastName ) { String queryString = "ВЫБРАТЬ a ИЗ Автор a " + "ГДЕ a.lastName ЕСТЬ NULL ИЛИ LOWER(a.lastName) = LOWER(:lastName)" ;           TypedQuery < Автор > query = getEntityManager ( ). createQuery ( queryString , Author.class ) ; query.setParameter ( " lastName " , lastName ); return query.getResultList ( ) ; }        

Язык запросов Hibernate

JPQL основан на языке запросов Hibernate (HQL), более раннем нестандартном языке запросов, включенном в библиотеку объектно-реляционного отображения Hibernate .

Hibernate и HQL были созданы до спецификации JPA. Начиная с Hibernate 3 JPQL является подмножеством HQL.

Цитаты

  1. ^ abc Бауэр, Кинг и Грегори 2016.

Ссылки

Смотрите также

Внешние ссылки