プライマリキーをInterstage永続性プロバイダで管理する機能です。プライマリキーが未設定の新規Entityに対し永続化操作(EntityManagerのpersistメソッド)を実行すると、永続性プロバイダがDBMSと連携し、自動的にEntityへプライマリキーを割り当てます。本機能を使用する場合は、必ず事前に手動でデータベーステーブルを作成してください。
Interstage永続性プロバイダは、以下の生成パターンを提供しますが、サポートされている生成パターンはDBMSに依存します。
生成パターン  | プライマリキー値の生成方針  | 
|---|---|
AUTO  | 永続性プロバイダが適切な生成方針を選択します。  | 
TABLE  | プライマリキー値生成用のテーブルを利用します。  | 
SEQUENCE  | データベースのシーケンス機能を利用します。  | 
IDENTITY  | データベースのIDENTITYカラムを利用します。  | 
注)生成パターンに上記以外の値を指定した場合は動作保証外です。
選択される方針と定義の省略値について以下に説明します。
以下は、アノテーションで定義する場合について記述しています。deployment descriptor (orm.xml)に指定する場合、アノテーション定義をそのアノテーションと相当するdeployment descriptor (orm.xml)のタグの定義として読んでください。
@GeneratedValueを定義すると属性の省略値は、以下のとおりになります。
strategyの定義値  | 使用するDBMS  | 選択される方針  | 
|---|---|---|
AUTO  | Symfoware  | generatorの値を省略した場合、Generatorの名前はSEQ_GENとなります。このGeneratorが定義されていない場合、属性の省略値を使用するTableGeneratorが使用されます。  | 
SQL Server  | generatorの値を省略した場合、Generatorの名前はSEQ_GENとなります。このGeneratorがSequenceGeneratorの場合、IDENTITYカラムが利用されます。このGeneratorが定義されていない場合、属性の省略値を使用するTableGeneratorが使用されます。  | |
TABLE  | すべて  | generatorを省略した場合、TableGeneratorが使用されます。TableGeneratorの名前はSEQ_GEN_TABLEとなります。このGeneratorを定義していない場合、属性の省略値を使用するTableGeneratorが使用されます。  | 
SEQUENCE  | Symfoware  | SequenceGeneratorが使用されます。  | 
SQL Server  | IDENTITYカラムが使用されます。  | 
@SequenceGeneratorのsequenceName属性の省略値は@SequenceGeneratorのnameと同じ値です。
@TableGeneratorの属性の省略値は、以下のとおりです。
属性名  | 省略値  | 
|---|---|
table  | SEQUENCE  | 
pkColumnName  | SEQ_NAME  | 
pkColumnValue  | @TableGeneratorのnameと同じ値  | 
valueColumnName  | SEQ_COUNT  | 
注意
プライマリキー値の自動生成機能に関する注意事項
TableGeneratorの名前に、省略値の「SEQ_GEN_SEQUENCE」、「SEQ_GEN_IDENTITY」を指定することはできません。
SequenceGeneratorの名前に、省略値の「SEQ_GEN_TABLE」、「SEQ_GEN_IDENTITY」を指定することはできません。
Generatorの名前は、Generatorの種類を問わず一意の値を指定してください。
その他のDBMS固有の注意事項は、「JPA機能における注意事項」を参照してください。