8.17.3 SELECT節
SELECT節ではクエリの結果を表します。一つ以上の値がクエリのSELECT節から返ります。SELECT節には,次に示す要素をコンマで区切って指定します。なお,コンマで区切られた一つのまとまりをselect式と呼びます。
-
抽象スキーマの識別子または識別子を付与した永続化フィールド
-
パス式
-
集合関数
-
コンストラクタ式
なお,DISTINCTキーワードは,重複する値をクエリ結果から除くときに指定してください。
SELECT節の記述例を次に示します。
SELECT e.employeeName, e.monthlySalary FROM Employee AS e WHERE e.monthlySalary < 150000
- 〈この項の構成〉
(1) コンストラクタ式
コンストラクタ式は,一つ以上のJavaのインスタンスを返すSELECT節のselect式で使用されます。生成名は完全修飾名を指定します。
コンストラクタ式は,エンティティのカラムの一部または全部や,関連する別のエンティティのカラムと組み合わせた形で取得できます。なお,この結果を格納するクラスはエンティティである必要はありません。
コンストラクタ式の構文は,select式にNEW演算子を付けて指定します。格納するクラスがエンティティの場合,エンティティクラスのインスタンスの状態はnewになります。コンストラクタ式の記述例を次に示します。
SELECT NEW com.hitachi.jpa.test.entity.EmployeeTmp (e.employeeId, e.employeeName, d.departmentName) FROM Department AS d, d.employees AS e WHERE e.employeeId = 12003
(2) 集合関数
SELECT節では集合関数を使用できます。使用できる集合関数を次の表に示します。
集合関数 |
引数 |
結果の型 |
適用される値がない場合の結果 |
---|---|---|---|
AVG |
数値型のステートフィールド※ |
Double型 |
null |
MAX |
順序を指定できるフィールド型(数値型,文字列型,文字型,または日付型)※ |
適用するフィールドの型 |
null |
MIN |
順序を指定できるフィールド型(数値型,文字列型,文字型,または日付型)※ |
適用するフィールドの型 |
null |
SUM |
数値型のステートフィールド※ |
|
null |
COUNT |
識別変数(引数にパス式を指定する場合,ステートフィールドか関連フィールドを指定する) |
Long型 |
0 |
なお,集合関数式の構文の詳細については,「付録G JPQLのBNF」を参照してください。