Самое первое предложение этого UserGuide дает важную информацию:
Язык запросов персистентности Java (JPQL) - это язык запросов, определенный JPA.JPQL похож на SQL, , но работает с объектами, атрибутами и связями вместо таблиц и столбцов.
То есть JPQL != SQL
в строгом смысле.JPQL - это язык запросов, предназначенный для запроса объекта в среде объектного реляционного преобразователя ( ORM ).В этом контексте ORM абстрагирует реальную СУБД («мир SQL»). EclipseLink полностью реализует стандарт JPQL, определенный в документах спецификации JPA (версии 1, 2.0, 2.1, 2.2).
Более того, EclipseLink
предоставляет множество расширенийстандарту JPA JPQL.Эти расширения обеспечивают доступ к дополнительным функциям базы данных, многие из которых являются частью стандарта SQL, обеспечивают доступ к собственным функциям и функциям базы данных и предоставляют доступ к определенным функциям EclipseLink.Расширения EclipseLink JPQL называются языком запросов EclipseLink (EQL).
Что это означает для операции
- COLUMN , позволяющей запрашиватьне сопоставленные столбцы, и
- TABLE операция, позволяющая запрашивать не сопоставленные таблицы?
EQL является расширением базового ORMреализация EclipseLink для предоставления вам расширенного способа запроса объектов и мета-информации о соответствующих им столбцах базы данных.Это реализовано отдельно для каждого поставщика - в зависимости от настроенного диалекта JPA - ИЛИ как можно более независимым от поставщика.
По сути, эти функции должны быть безопасными, если речь идет о различных системах DBM.Тем не менее, вы раз и навсегда привяжете свое приложение к EclipseLink, лишив себя возможности переключаться на других поставщиков JPA, например, Hibernate , если вы хотите поэкспериментировать или по соображениям производительности.
Надеюсь, это поможет.