8.17.1 JPQLの構文
JPQL文には,SELECT文とUPDATE文,DELETE文があります。
JPQL文は,動的に指定したり,アノテーションやO/Rマッピングファイルのタグで静的に定義したりすることができます。また,JPQLのすべての文でパラメタの指定ができます。
JPQLは型付き言語で,すべての式は型を持ちます。式の型は,式の構成や識別変数で定義された抽象スキーマ型,永続化フィールドとリレーションシップを評価する型,およびリテラル型で構成されています。なお,構文の文法については,「付録G JPQLのBNF」を参照してください。
- 注意事項
-
CJPAプロバイダの場合,BNF構文に準拠しないJPQLを使用すると,例外が発生するおそれがあります。例外が発生しない場合でも,動作は保証しません。また,BNF構文に準拠したJPQLを使用した場合でも,使用するデータベースで該当する機能をサポートしていない場合の動作は保証しません。
- 〈この項の構成〉
(1) 抽象スキーマ型
JPQLでは,エンティティを対象にクエリを発行します。そのため,クエリでは対象となるエンティティの抽象スキーマを定義する必要があります。エンティティの抽象スキーマ型は,アノテーションまたはO/Rマッピングファイルによって提供されるエンティティクラスとO/Rマッピングの情報によって定義されます。
抽象スキーマ型とは,エンティティクラスのことを指します。エンティティクラスを構成するものとして,フィールドや,アノテーションなどのO/Rマッピング情報があります。
エンティティの抽象スキーマ型は次に示すフィールドを持ちます。
-
ステートフィールド
ステートフィールドは,エンティティクラスの永続化フィールド,または永続化プロパティで,リレーションシップによる関連が存在しないフィールド,またはプロパティです。
-
関連フィールド
関連フィールドは,エンティティクラスでリレーションシップによって関連づいた永続化フィールド,または永続化プロパティです。リレーションシップがOneToManyまたはManyToManyの場合,フィールドはコレクションになります。