8.22.51 @SequenceGenerator
(1) 説明
プライマリキーを作成するシーケンスジェネレータの設定を指定するアノテーションです。@SequenceGeneratorを使用する場合,次の設定が必要です。
-
@GeneratedValueのstrategy属性にGenerationType.SEQUENCEを指定します。
-
@GeneratedValueのgenerator属性で指定された名前を@SequenceGeneratorのname属性に設定します。
シーケンスジェネレータは,エンティティクラス,またはプライマリキーのフィールドもしくはプロパティで指定されます。シーケンスジェネレータ名のスコープは永続化ユニットで有効です。
シーケンスオブジェクトを作成する場合,順序の番号間の増分間隔(INCREMENT BY)と生成する順序番号の初期値(START WITH)には,正の整数を指定します。初期値(START WITH)に1を指定した場合,プライマリキーは1から生成されます。負の値を指定した場合の動作は保証しません。
適用可能要素は,クラス,メソッド,およびフィールドです。
(2) 属性
@SequenceGeneratorの属性の一覧を次の表に示します。
属性名 |
任意/必須 |
属性の説明 |
---|---|---|
必須 |
@GeneratedValueアノテーションのgenerator属性で指定された名前を指定する属性です。 |
|
任意 |
既存のプライマリキー値または事前に定義したプライマリキー値を取得するためのデータベースシーケンスオブジェクトの名前を指定する属性です。 |
|
initialValue |
任意 |
シーケンスオブジェクトが,プライマリキー値生成を開始する初期値を指定する属性です。 なお,この属性は,CJPAプロバイダには対応していません。値を指定した場合は無視されます。 |
任意 |
シーケンスからプライマリキー値を割り当てるサイズを指定する属性です。 |
CJPAプロバイダで対応する属性の詳細を次に示します。
(a) name属性
- 型
-
String
- 説明
-
@GeneratedValueアノテーションのgenerator属性で指定された名前を指定する属性です。
指定できる値は,文字列です。
- デフォルト値
-
なし
(b) sequenceName属性
- 型
-
String
- 説明
-
既存のプライマリキー値または事前に定義したプライマリキー値を取得するためのデータベースシーケンスオブジェクトの名前を指定する属性です。
指定できるシーケンスオブジェクト名は,データベースの仕様に依存します。
- デフォルト値
-
@GeneratedValueのgenerator属性の指定値
(c) allocationSize属性
- 型
-
int
- 説明
-
シーケンスからプライマリキー値を割り当てるサイズを指定する属性です。指定できるシーケンスオブジェクト名は,データベースの仕様に依存します。
指定できるサイズは,int型の1以上の数値です。シーケンスオブジェクトの増分間隔と同じ値を指定します。異なる値を指定した場合の動作は保証しません。
なお,この属性は,実行時に利用する最大値を指定できます。シーケンス番号の管理領域として取得するため,大きな値を指定した場合は,実行時にjava.lang.OutOfMemoryError例外が発生します。
- デフォルト値
-
50