パッケージ 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)
を呼び出すことができます。
メソッドのサマリー
修飾子と型メソッド説明boolean
execute()
最初の結果が結果セットに対応する場合は 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.time
SE で定義された日付 / 時刻型を使用する必要があります。setParameter
(Parameter<CalendarSE> param, CalendarSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.time
SE で定義された日付 / 時刻型を使用する必要があります。setParameter
(Parameter<DateSE> param, DateSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.time
SE で定義された日付 / 時刻型を使用する必要があります。setParameter
(Parameter<T> param, T value) Parameter
オブジェクトの値をバインドします。setParameter
(StringSE name, ObjectSE value) 引数値を名前付きパラメーターにバインドします。setParameter
(StringSE name, CalendarSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.time
SE で定義された日付 / 時刻型を使用する必要があります。setParameter
(StringSE name, DateSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.time
SE で定義された日付 / 時刻型を使用する必要があります。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.time
SE で定義された日付 / 時刻型を使用する必要があります。Calendar
SE のインスタンスをParameter
オブジェクトにバインドします。- 次で指定:
- インターフェース
Query
のsetParameter
- パラメーター:
param
- パラメーターオブジェクトvalue
- パラメーター値temporalType
- 時間型- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE
- パラメーターがクエリのパラメーターに対応していない場合
setParameter
@DeprecatedSE(since="3.2") StoredProcedureQuery setParameter(Parameter<DateSE> param, DateSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.time
SE で定義された日付 / 時刻型を使用する必要があります。- 次で指定:
- インターフェース
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.time
SE で定義された日付 / 時刻型を使用する必要があります。java.util.Calendar
のインスタンスを名前付きパラメーターにバインドします。- 次で指定:
- インターフェース
Query
のsetParameter
- パラメーター:
name
- パラメーター名value
- パラメーター値temporalType
- 時間型- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE
- パラメーター名がクエリのパラメーターに対応していない場合、または値の引数の型が正しくない場合
setParameter
@DeprecatedSE(since="3.2") StoredProcedureQuery setParameter(StringSE name, DateSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.time
SE で定義された日付 / 時刻型を使用する必要があります。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.time
SE で定義された日付 / 時刻型を使用する必要があります。java.util.Calendar
のインスタンスを定位置パラメーターにバインドします。- 次で指定:
- インターフェース
Query
のsetParameter
- パラメーター:
position
- 位置value
- パラメーター値temporalType
- 時間型- 戻り値:
- 同じクエリインスタンス
- 例外:
IllegalArgumentExceptionSE
- 位置がクエリの位置パラメーターに対応していない場合、または値の引数の型が正しくない場合
setParameter
@DeprecatedSE(since="3.2") StoredProcedureQuery setParameter(int position, DateSE value, TemporalType temporalType) 使用すべきではありません。新しく作成したコードでは、java.time
SE で定義された日付 / 時刻型を使用する必要があります。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.time
SE で定義された日付 / 時刻型を使用する必要があります。