8.22.55 @TableGenerator
(1) 説明
プライマリキーを作成するジェネレータの設定を指定するアノテーションです。
@TableGeneratorを使用する場合,次の設定が必要です。
-
@GeneratedValueのstrategy属性にGenerationType.TABLEを指定します。
-
@GeneratedValueのgenerator属性で指定された名前を@TableGeneratorのname属性に設定します。
テーブルジェネレータは,エンティティクラス,またはプライマリキーのフィールドまたはプロパティに指定されます。ジェネレータ名のスコープは永続化ユニットで有効です。
エンティティはプライマリキー値を生成するために,ジェネレータテーブルの行を使用します。
シーケンスを管理するテーブルを作成する場合,初期値には正の整数を指定します。初期値に0を指定した場合,プライマリキーは1から生成されます。
適用可能要素は,クラス,メソッド,およびフィールドです。
(2) 属性
@TableGeneratorの属性の一覧を次の表に示します。
属性名 |
任意/必須 |
属性の説明 |
---|---|---|
必須 |
プライマリキー値のためのジェネレータ名を指定する属性です。 |
|
任意 |
生成されるプライマリキー値を確保するテーブルの名前を指定する属性です。 |
|
catalog |
任意 |
生成されるプライマリキー値を確保するテーブルのカタログ名を指定する属性です。 なお,この属性は,CJPAプロバイダには対応していません。 |
任意 |
生成されるプライマリキー値を確保するテーブルのスキーマ名を指定する属性です。 |
|
任意 |
生成されるプライマリキー値を確保するテーブルのプライマリキーカラム名を指定する属性です。 |
|
任意 |
生成された最終値を確保するカラム名を指定する属性です。 |
|
任意 |
生成されるプライマリキー値を確保するテーブルのプライマリキー値を指定する属性です。 |
|
initialValue |
任意 |
生成された最新の値を確保するカラムを初期化するために使う値を指定する属性です。 なお,この属性は,CJPAプロバイダには対応していません。値を指定した場合は無視されます。 |
任意 |
ジェネレータからプライマリキー値を割り当てるサイズを指定する属性です。 |
|
uniqueConstraints |
任意 |
生成されるプライマリキー値を確保するテーブル上でのユニークキー制約を指定する属性です。 なお,この属性は,CJPAプロバイダには対応していません。値を指定した場合は無視されます。 |
CJPAプロバイダで対応する属性の詳細を次に示します。
(a) name属性
- 型
-
String
- 説明
-
プライマリキー値のためのジェネレータ名を指定する属性です。
指定できる値は,文字列です。
- デフォルト値
-
なし
(b) table属性
- 型
-
String
- 説明
-
生成されるプライマリキー値を確保するテーブルの名前を指定する属性です。
指定できるテーブル名は,データベースの仕様に依存します。
- デフォルト値
-
"SEQUENCE"
(c) schema属性
- 型
-
String
- 説明
-
生成されるプライマリキー値を確保するテーブルのスキーマ名を指定する属性です。
指定できるスキーマ名は,データベースの仕様に依存します。
- デフォルト値
-
使用するデータベースのデフォルトのスキーマ名
(d) pkColumnName属性
- 型
-
String
- 説明
-
生成されるプライマリキー値を確保するテーブルのプライマリキーカラム名を指定する属性です。
指定できるカラム名は,データベースの仕様に依存します。
- デフォルト値
-
"SEQ_NAME"
(e) valueColumnName属性
- 型
-
String
- 説明
-
生成された最終値を確保するカラム名を指定する属性です。
指定できるカラム名は,データベースの仕様に依存します。
- デフォルト値
-
"SEQ_COUNT"
(f) pkColumnValue属性
- 型
-
String
- 説明
-
生成されるプライマリキー値を確保するテーブルのプライマリキー値を指定する属性です。
指定できる値は,生成されたプライマリキーのカラムの型に依存します。
- デフォルト値
-
name属性で指定された文字列
(g) allocationSize属性
- 型
-
int
- 説明
-
ジェネレータからプライマリキー値を割り当てるサイズを指定する属性です。
指定できる値は,int型の1以上の数値です。
なお,この属性は,実行時に利用する最大値を指定できます。シーケンス番号の管理領域として取得するため,大きな値を指定した場合は,実行時にjava.lang.OutOfMemoryError例外が発生します。
- デフォルト値
-
50