Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 互換編


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節では集合関数を使用できます。使用できる集合関数を次の表に示します。

表8‒20 JPQLのSELECT節で使用できる集合関数

集合関数

引数

結果の型

適用される値がない場合の結果

AVG

数値型のステートフィールド

Double型

null

MAX

順序を指定できるフィールド型(数値型,文字列型,文字型,または日付型)

適用するフィールドの型

null

MIN

順序を指定できるフィールド型(数値型,文字列型,文字型,または日付型)

適用するフィールドの型

null

SUM

数値型のステートフィールド

  • 整数型の場合:Long型

  • 浮動小数点型の場合:Double型

  • BigInteger型の場合:BigInteger型

  • BigDecimal型の場合:BigDecimal型

null

COUNT

識別変数(引数にパス式を指定する場合,ステートフィールドか関連フィールドを指定する)

Long型

0

注 DISTINCTが指定されているかどうかにかかわらず,集合関数が適用される前にnull値は除去されます。

注※ 引数にパス式を指定する場合,関連フィールドを指定することはできません。

なお,集合関数式の構文の詳細については,「付録G JPQLのBNF」を参照してください。

(3) SELECT節の実行結果

クエリのSELECT節で定義されるクエリ結果の型は,次のどれか一つになります。なお,複数ある場合は順番に並べられます。

SELECT節の結果の型は,SELECT節に含まれるselect式の結果の型によって定義されます。複数のselect式がSELECT節で使われている場合,クエリの結果はObject[]型となります。この結果の要素はSELECT節で指定された順番に一致し,各select式の結果の型と一致します。