パッケージ jakarta.persistence
インターフェース StoredProcedureQuery
- すべてのスーパーインターフェース:
Query
ストアドプロシージャクエリの実行を制御するために使用されるインターフェース。
ストアドプロシージャクエリの実行は、以下に従って制御できます。
setParameter(jakarta.persistence.Parameter<T>, T)メソッドは、すべての必須INおよびINOUTパラメーターの値を設定するために使用されます。ストアドプロシージャによってデフォルト値が定義されているストアドプロシージャパラメーターの値を設定する必要はありません。getResultList()およびgetSingleResult()がStoredProcedureQueryオブジェクトで呼び出される場合、プロバイダーはgetResultListまたはgetSingleResultを処理する前に、未実行のストアドプロシージャクエリでexecute()を呼び出します。executeUpdate()がStoredProcedureQueryオブジェクトで呼び出される場合、プロバイダーは未実行のストアドプロシージャクエリでexecute()を呼び出し、その後にgetUpdateCount()を呼び出します。executeUpdateの結果はgetUpdateCountの結果になります。execute()メソッドは、スカラー結果がINOUTおよびOUTパラメーターを介してのみ返される単純なケースと、最も一般的なケース (複数の結果セットおよび / または更新カウント、場合によっては出力パラメーター値との組み合わせ) の両方をサポートします。executeメソッドは、最初の結果が結果セットである場合は true を返し、更新カウントである場合、INOUTおよびOUTパラメーター(存在する場合)以外の結果がない場合は false を返します。executeメソッドが true を返す場合、保留中の結果セットはgetResultList()またはgetSingleResult()を呼び出すことで取得できます。- その後、
hasMoreResults()メソッドを使用してさらなる結果をテストできます。 executeまたはhasMoreResultsが false を返した場合、更新カウントの場合は、getUpdateCount()メソッドを呼び出して保留中の結果を取得できます。getUpdateCountメソッドは、更新カウント (0 以上) を返すか、更新カウントがない場合 (つまり、次の結果が結果セットであるか、次の更新カウントがない場合) は -1 を返します。- 移植性のために、JDBC 結果セットおよび更新カウントに対応する結果は、
INOUTまたはOUTパラメーターの値が抽出される前に処理される必要があります。 getResultList()およびgetUpdateCount()を通じて返された結果を使い果たした後、INOUTおよびOUTパラメーターを通じて返された結果を取得できます。getOutputParameterValue(int)メソッドは、INOUTおよびOUTパラメーターを通じてプロシージャから返された値を取得するために使用されます。- 結果セットに
REF_CURSORパラメーターを使用する場合は、getResultList()を呼び出して結果セットを取得する前に、更新カウントを使い果たす必要があります。あるいは、REF_CURSOR結果セットはgetOutputParameterValue(int)を通じて取得できます。結果セットのマッピングは、REF_CURSORパラメーターがクエリに登録された順序で、REF_CURSORパラメーターに対応する結果に適用されます。 INOUTおよびOUTパラメーターを介してのみ結果が返される最も単純なケースでは、executeの直後にgetOutputParameterValue(int)を呼び出すことができます。
方法の概要
修飾子と型メソッド説明booleanexecute()最初の結果が結果セットに対応する場合は true を返し、それが更新カウントである場合、INOUT および OUT パラメーターを介して以外に結果がない場合は false を返します。int保留中の結果がない場合、または最初の結果が更新カウントでない場合は、更新カウント -1 を返します。getOutputParameterValue(int position) INOUT または OUT パラメーターを介してプロシージャから返された値を取得します。getOutputParameterValue(StringSE parameterName) INOUT または OUT パラメーターを介してプロシージャから返された値を取得します。次の結果セットから結果のリストを取得します。次の結果セットから単一の結果を取得します。次の結果セットから単一の結果を取得します。int更新カウントを返すか、保留中の結果がない場合、次の結果が更新カウントでない場合は -1 を返します。boolean次の結果が結果セットに対応する場合は true を返し、更新カウントである場合、INOUT パラメーターと OUT パラメーターを介して以外に結果がない場合は false を返します。registerStoredProcedureParameter(int position, ClassSE<?> type, ParameterMode mode) 位置パラメーターを登録します。registerStoredProcedureParameter(StringSE parameterName, ClassSE<?> type, ParameterMode mode) 名前付きパラメーターを登録します。setCacheRetrieveMode(CacheRetrieveMode cacheRetrieveMode) クエリ実行時に有効なキャッシュ取得モードを設定します。setCacheStoreMode(CacheStoreMode cacheStoreMode) クエリ実行時に有効なキャッシュストレージモードを設定します。setFlushMode(FlushModeType flushMode) クエリの実行に使用されるフラッシュモードの種類を設定します。クエリのプロパティまたはヒントを設定します。setParameter(int position, ObjectSE value) 引数値を定位置パラメーターにバインドします。setParameter(int position, CalendarSE value, TemporalType temporalType) 使用すべきではありません。setParameter(int position, DateSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.timeSE で定義された日付 / 時刻型を使用する必要があります。setParameter(Parameter<CalendarSE> param, CalendarSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.timeSE で定義された日付 / 時刻型を使用する必要があります。setParameter(Parameter<DateSE> param, DateSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.timeSE で定義された日付 / 時刻型を使用する必要があります。setParameter(Parameter<T> param, T value) Parameterオブジェクトの値をバインドします。setParameter(StringSE name, ObjectSE value) 引数値を名前付きパラメーターにバインドします。setParameter(StringSE name, CalendarSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.timeSE で定義された日付 / 時刻型を使用する必要があります。setParameter(StringSE name, DateSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.timeSE で定義された日付 / 時刻型を使用する必要があります。setTimeout(IntegerSE timeout) クエリのタイムアウトをミリ秒単位で設定します。インターフェース jakarta.persistence.Query から継承されたメソッド
getCacheRetrieveMode, getCacheStoreMode, getFirstResult, getFlushMode, getHints, getLockMode, getMaxResults, getParameter, getParameter, getParameter, getParameter, getParameters, getParameterValue, getParameterValue, getParameterValue, getResultStream, getTimeout, isBound, setFirstResult, setLockMode, setMaxResults, unwrap
メソッドの詳細
setHint
クエリプロパティまたはヒントを設定します。ヒント要素は、クエリのプロパティとヒントを指定するために使用できます。この仕様で定義されたプロパティは、プロバイダーによって監視される必要があります。プロバイダーによって認識されないベンダー固有のヒントは、確認なしで無視する必要があります。ポータブルアプリケーションは、標準のタイムアウトヒントに依存しないでください。使用中のデータベースに応じて、このヒントは観測される場合と観測されない場合があります。- 次で指定:
- インターフェース
QueryのsetHint - パラメーター:
hintName- プロパティまたはヒントの名前value- プロパティまたはヒントの値- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- 2 番目の引数が実装に有効でない場合
setParameter
Parameterオブジェクトの値をバインドします。- 次で指定:
- インターフェース
QueryのsetParameter - パラメーター:
param- パラメーターオブジェクトvalue- パラメーター値- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- パラメーターがクエリのパラメーターに対応していない場合
setParameter
@DeprecatedSE(since="3.2") StoredProcedureQuery setParameter(Parameter<CalendarSE> param, CalendarSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.timeSE で定義された日付 / 時刻型を使用する必要があります。CalendarSE のインスタンスをParameterオブジェクトにバインドします。- 次で指定:
- インターフェース
QueryのsetParameter - パラメーター:
param- パラメーターオブジェクトvalue- パラメーター値temporalType- 時間型- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- パラメーターがクエリのパラメーターに対応していない場合
setParameter
@DeprecatedSE(since="3.2") StoredProcedureQuery setParameter(Parameter<DateSE> param, DateSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.timeSE で定義された日付 / 時刻型を使用する必要があります。- 次で指定:
- インターフェース
QueryのsetParameter - パラメーター:
param- パラメーターオブジェクトvalue- パラメーター値temporalType- 時間型- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- パラメーターがクエリのパラメーターに対応していない場合
setParameter
引数値を名前付きパラメーターにバインドします。- 次で指定:
- インターフェース
QueryのsetParameter - パラメーター:
name- パラメーター名value- パラメーター値- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- パラメーター名がクエリのパラメーターに対応していない場合、または引数の型が正しくない場合
setParameter
@DeprecatedSE(since="3.2") StoredProcedureQuery setParameter(StringSE name, CalendarSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.timeSE で定義された日付 / 時刻型を使用する必要があります。java.util.Calendarのインスタンスを名前付きパラメーターにバインドします。- 次で指定:
- インターフェース
QueryのsetParameter - パラメーター:
name- パラメーター名value- パラメーター値temporalType- 時間型- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- パラメーター名がクエリのパラメーターに対応していない場合、または値の引数の型が正しくない場合
setParameter
@DeprecatedSE(since="3.2") StoredProcedureQuery setParameter(StringSE name, DateSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.timeSE で定義された日付 / 時刻型を使用する必要があります。java.util.Dateのインスタンスを名前付きパラメーターにバインドします。- 次で指定:
- インターフェース
QueryのsetParameter - パラメーター:
name- パラメーター名value- パラメーター値temporalType- 時間型- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- パラメーター名がクエリのパラメーターに対応していない場合、または値の引数の型が正しくない場合
setParameter
引数値を定位置パラメーターにバインドします。- 次で指定:
- インターフェース
QueryのsetParameter - パラメーター:
position- 位置value- パラメーター値- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- 位置がクエリの位置パラメーターに対応していない場合、または引数の型が正しくない場合
setParameter
@DeprecatedSE(since="3.2") StoredProcedureQuery setParameter(int position, CalendarSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.timeSE で定義された日付 / 時刻型を使用する必要があります。java.util.Calendarのインスタンスを定位置パラメーターにバインドします。- 次で指定:
- インターフェース
QueryのsetParameter - パラメーター:
position- 位置value- パラメーター値temporalType- 時間型- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- 位置がクエリの位置パラメーターに対応していない場合、または値の引数の型が正しくない場合
setParameter
@DeprecatedSE(since="3.2") StoredProcedureQuery setParameter(int position, DateSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.timeSE で定義された日付 / 時刻型を使用する必要があります。java.util.Dateのインスタンスを定位置パラメーターにバインドします。- 次で指定:
- インターフェース
QueryのsetParameter - パラメーター:
position- 位置value- パラメーター値temporalType- 時間型- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE- 位置がクエリの位置パラメーターに対応していない場合、または値の引数の型が正しくない場合
setFlushMode
クエリの実行に使用するフラッシュモード型を設定します。フラッシュモード型は、エンティティマネージャーで使用されているフラッシュモード型に関係なく、クエリに適用されます。- 次で指定:
- インターフェース
QueryのsetFlushMode - パラメーター:
flushMode- フラッシュモード- 戻り値:
- 同じクエリインスタンス
setCacheRetrieveMode
クエリ実行時に有効なキャッシュ取得モードを設定します。このキャッシュ取得モードは、エンティティマネージャーが使用しているキャッシュ取得モードをオーバーライドします。- 次で指定:
- インターフェース
QueryのsetCacheRetrieveMode - パラメーター:
cacheRetrieveMode- キャッシュ取得モード- 戻り値:
- 同じクエリインスタンス
- 導入:
- 3.2
setCacheStoreMode
クエリ実行時に有効なキャッシュストレージモードを設定します。このキャッシュストレージモードは、エンティティマネージャーが使用しているキャッシュストレージモードをオーバーライドします。- 次で指定:
- インターフェース
QueryのsetCacheStoreMode - パラメーター:
cacheStoreMode- キャッシュストレージモード- 戻り値:
- 同じクエリインスタンス
- 導入:
- 3.2
setTimeout
クエリのタイムアウトをミリ秒単位で設定します。これはヒントであり、ヒントjakarta.persistence.query.timeoutを設定する代わりに使用できます。- 次で指定:
- インターフェース
QueryのsetTimeout - パラメーター:
timeout- タイムアウト(ミリ秒単位)、またはタイムアウトなしを示す場合は null- 戻り値:
- 同じクエリインスタンス
- 導入:
- 3.2
registerStoredProcedureParameter
StoredProcedureQuery registerStoredProcedureParameter(int position, ClassSE<?> type, ParameterMode mode) 位置パラメーターを登録します。すべてのパラメーターを登録する必要があります。- パラメーター:
position- パラメーターの位置type- パラメーターの型mode- パラメーターモード- 戻り値:
- 同じクエリインスタンス
registerStoredProcedureParameter
StoredProcedureQuery registerStoredProcedureParameter(StringSE parameterName, ClassSE<?> type, ParameterMode mode) 名前付きパラメーターを登録します。- パラメーター:
parameterName- メタデータに登録または指定されているパラメーターの名前type- パラメーターの型mode- パラメーターモード- 戻り値:
- 同じクエリインスタンス
getOutputParameterValue
INOUT または OUT パラメーターを介してプロシージャから返された値を取得します。移植性のために、結果セットと更新カウントに対応するすべての結果は、出力パラメーターの値の前に取得する必要があります。- パラメーター:
position- パラメーターの位置- 戻り値:
- パラメーターを介して返される結果
- 例外:
IllegalArgumentExceptionSE- 位置がクエリのパラメーターに対応していないか、INOUT または OUT パラメーターではない場合
getOutputParameterValue
INOUT または OUT パラメーターを介してプロシージャから返された値を取得します。移植性のために、結果セットと更新カウントに対応するすべての結果は、出力パラメーターの値の前に取得する必要があります。- パラメーター:
parameterName- メタデータに登録または指定されているパラメーターの名前- 戻り値:
- パラメーターを介して返される結果
- 例外:
IllegalArgumentExceptionSE- パラメーター名がクエリのパラメーターに対応していないか、INOUT または OUT パラメーターではない場合
execute
boolean execute()最初の結果が結果セットに対応する場合は true を返し、それが更新カウントである場合、INOUT および OUT パラメーターを介して以外に結果がない場合は false を返します。- 戻り値:
- 最初の結果が結果セットに対応する場合は true
- 例外:
QueryTimeoutException- クエリ実行が設定されたクエリタイムアウト値を超え、ステートメントのみがロールバックされる場合PersistenceException- クエリ実行が設定されたクエリタイムアウト値を超え、トランザクションがロールバックされた場合
executeUpdate
int executeUpdate()保留中の結果がない場合、または最初の結果が更新カウントでない場合は、更新カウント -1 を返します。プロバイダーは、必要に応じてクエリでexecuteを呼び出します。- 次で指定:
- インターフェース
QueryのexecuteUpdate - 戻り値:
- 更新カウント。保留中の結果がない場合、または次の結果が更新カウントでない場合は -1。
- 例外:
TransactionRequiredException- トランザクションがないか、永続コンテキストがトランザクションに参加していない場合QueryTimeoutException- ステートメントの実行が設定されたクエリタイムアウト値を超え、ステートメントのみがロールバックされる場合PersistenceException- クエリ実行が設定されたクエリタイムアウト値を超え、トランザクションがロールバックされた場合
getResultList
ListSE getResultList()次の結果セットから結果のリストを取得します。プロバイダーは、必要に応じてクエリに対してexecuteを呼び出します。REF_CURSOR結果セット (存在する場合) は、REF_CURSORパラメーターがクエリに登録された順序で取得されます。- 次で指定:
- インターフェース
QueryのgetResultList - 戻り値:
- 結果のリストまたは null が次の項目である場合は結果セットではありません
- 例外:
QueryTimeoutException- クエリ実行が設定されたクエリタイムアウト値を超え、ステートメントのみがロールバックされる場合PersistenceException- クエリ実行が設定されたクエリタイムアウト値を超え、トランザクションがロールバックされた場合
getSingleResult
ObjectSE getSingleResult()次の結果セットから 1 つの結果を取得します。プロバイダーは、必要に応じてクエリに対してexecuteを呼び出します。REF_CURSOR結果セット (存在する場合) は、REF_CURSORパラメーターがクエリに登録された順序で取得されます。- 次で指定:
- インターフェース
QueryのgetSingleResult - 戻り値:
- 結果、または次の項目が結果セットでない場合は null
- 例外:
NoResultException- 次の結果セットに結果がない場合NonUniqueResultException- 複数の結果の場合QueryTimeoutException- クエリ実行が設定されたクエリタイムアウト値を超え、ステートメントのみがロールバックされる場合PersistenceException- クエリ実行が設定されたクエリタイムアウト値を超え、トランザクションがロールバックされた場合
getSingleResultOrNull
ObjectSE getSingleResultOrNull()次の結果セットから 1 つの結果を取得します。プロバイダーは、必要に応じてクエリに対してexecuteを呼び出します。REF_CURSOR結果セット (存在する場合) は、REF_CURSORパラメーターがクエリに登録された順序で取得されます。- 次で指定:
- インターフェース
QueryのgetSingleResultOrNull - 戻り値:
- 結果、または次の項目が結果セットでない場合、次の結果セットに結果がない場合は null
- 例外:
NonUniqueResultException- 複数の結果の場合QueryTimeoutException- クエリ実行が設定されたクエリタイムアウト値を超え、ステートメントのみがロールバックされる場合PersistenceException- クエリ実行が設定されたクエリタイムアウト値を超え、トランザクションがロールバックされた場合
hasMoreResults
boolean hasMoreResults()次の結果が結果セットに対応する場合は true を返し、更新カウントである場合、INOUT パラメーターと OUT パラメーターを介して以外に結果がない場合は false を返します。- 戻り値:
- 次の結果が結果セットに対応する場合は true
- 例外:
QueryTimeoutException- クエリ実行が設定されたクエリタイムアウト値を超え、ステートメントのみがロールバックされる場合PersistenceException- クエリ実行が設定されたクエリタイムアウト値を超え、トランザクションがロールバックされた場合
getUpdateCount
int getUpdateCount()更新カウントを返すか、保留中の結果がない場合、次の結果が更新カウントでない場合は -1 を返します。- 戻り値:
- 更新カウントまたは保留中の結果がない場合、または次の結果が更新カウントでない場合は -1
- 例外:
QueryTimeoutException- クエリ実行が設定されたクエリタイムアウト値を超え、ステートメントのみがロールバックされる場合PersistenceException- クエリ実行が設定されたクエリタイムアウト値を超え、トランザクションがロールバックされた場合
java.timeSE で定義された日付 / 時刻型を使用する必要があります。