Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)

[目次][用語][索引][前へ][次へ]

6.17.1 JPQLの構文

JPQL文には,SELECT文とUPDATE文,DELETE文があります。

JPQL文は,動的に指定したり,アノテーションやO/Rマッピングファイルのタグで静的に定義したりすることができます。また,JPQLのすべての文でパラメタの指定ができます。

JPQLは型付き言語で,すべての式は型を持ちます。式の型は,式の構成や識別変数で定義された抽象スキーマ型,永続化フィールドとリレーションシップを評価する型,およびリテラル型で構成されています。なお,構文の文法については,「付録D JPQLのBNF」を参照してください。

注意
CJPAプロバイダの場合,BNF構文に準拠しないJPQLを使用すると,例外が発生するおそれがあります。例外が発生しない場合でも,動作は保証しません。また,BNF構文に準拠したJPQLを使用した場合でも,使用するデータベースで該当する機能をサポートしていない場合の動作は保証しません。
<この項の構成>
(1) 抽象スキーマ型
(2) 抽象スキーマ名
(3) クエリのドメイン

(1) 抽象スキーマ型

JPQLでは,エンティティを対象にクエリを発行します。そのため,クエリでは対象となるエンティティの抽象スキーマを定義する必要があります。エンティティの抽象スキーマ型は,アノテーションまたはO/Rマッピングファイルによって提供されるエンティティクラスとO/Rマッピングの情報によって定義されます。

抽象スキーマ型とは,エンティティクラスのことを指します。エンティティクラスを構成するものとして,フィールドや,アノテーションなどのO/Rマッピング情報があります。

エンティティの抽象スキーマ型は次に示すフィールドを持ちます。

(2) 抽象スキーマ名

JPQLでは,エンティティを示すために,その抽象スキーマ型を指定する必要があります。抽象スキーマ型を示すための名前を抽象スキーマ名といいます。抽象スキーマ名は@Entityのname属性(またはO/Rマッピングファイルの<entity>タグのname属性)で定義します。name属性が指定されなかった場合は,エンティティクラスの(パッケージ名抜きの)クラス名となります。

抽象スキーマ名は,永続化ユニット単位で固有となります。

(3) クエリのドメイン

クエリのドメインは,永続化ユニット内で定義されたすべてのエンティティの抽象スキーマ型を参照できます。抽象スキーマ型の中で定義されている関連フィールドによって,ほかの関連するエンティティの抽象スキーマ型を参照できます。