8.22.20 @GeneratedValue
(1) 説明
プライマリキーカラムにユニークな値を自動で生成,付与する方法を指定するアノテーションです。@Idを持つエンティティクラスまたはマップドスーパークラスのプライマリキーのフィールドまたはプロパティに適用します。
プライマリキー値の生成方法には,次の4種類の方法があります。なお,選択する生成方法に基づいて,あらかじめ基礎テーブルやデータベースシーケンスオブジェクトを用意しておく必要があります。それぞれの生成方法の詳細は,strategy属性の説明を参照してください。
-
GenerationType.AUTO
-
GenerationType.IDENTITY
-
GenerationType.SEQUENCE
-
GenerationType.TABLE
適用可能要素は,メソッドとフィールドです。
(2) 属性
@GeneratedValueの属性の一覧を次の表に示します。
属性名 |
任意/必須 |
属性の説明 |
---|---|---|
任意 |
エンティティクラスのプライマリキー値を生成する方法を指定する属性です。 |
|
任意 |
使用する@SequenceGeneratorまたは@TableGeneratorで設定されるname属性を指定する属性です。 |
CJPAプロバイダで対応する属性の詳細を次に示します。
(a) strategy属性
- 型
-
GenerationType
- 説明
-
エンティティクラスのプライマリキー値を生成する方法を指定する属性です。
指定できる値は,次の4種類です。
-
GenerationType.AUTO
データベースごとに最も適切な手順を選択して,プライマリキー値を生成します。
データベースがOracleまたはHiRDBの場合は,GenerationType.TABLEと同じ処理をします。
-
GenerationType.IDENTITY
データベースのidentity列を利用して,プライマリキー値を生成します。
データベースがOracleの場合は,GenerationType.SEQUENCEと同じ処理をします。
データベースがHiRDBの場合は,GenerationType.TABLEと同じ処理をします。
-
GenerationType.SEQUENCE
データベースのシーケンスオブジェクトを使用して,プライマリキー値を生成します。
データベースがHiRDBの場合は,GenerationType.TABLEと同じ処理をします。
-
GenerationType.TABLE
プライマリキー値を保持しておくためのテーブルを使用して,プライマリキー値を生成します。
-
- デフォルト値
-
GenerationType.AUTO
(b) generator属性
- 型
-
String
- 説明
-
使用する@SequenceGeneratorまたは@TableGeneratorで設定されるname属性を指定する属性です。
- デフォルト値
-
strategy属性の値によって,次の名前が仮定されます。
-
GenerationType.AUTOの場合
"SEQ_GEN"
-
GenerationType.SEQUENCEの場合
"SEQ_GEN_SEQUENCE"
-
GenerationType.TABLEの場合
"SEQ_GEN_TABLE"
-