additionalPrimaryKeyMap
additionalPrimaryKeyMapとは?
実質的なPK(PrimaryKey)の関連がありながらも実際にはPK制約が存在しないテーブルおよびビューについて、 DBFluteが生成するEntityにてPKとして扱えるようにする DBFluteプロパティ。DBFluteクライアントの dfprop 配下の additionalPrimaryKeyMap.dfprop という名前のテキストファイルです。主に Generateタスク を実行する際に参照され、実際にPK制約が存在しないテーブルでも、このプロパティの設定を行うことでPKを持ったEntityを生成できます。
PK制約がない場合のDBFlute
PK制約がない場合(かつ、このプロパティを利用しない場合)は、"ConditionBeanでのPKによる検索" や "Behaviorによる登録・更新・削除処理" ができません。PK制約自体に多くのメリットがあるため、基本的にはPK制約がしっかりDB側に付与されていることが推奨されます。
主な利用パターン
- PK制約は存在しないが実質的にPKである
- 基本的にはPK制約がしっかりDB側に付与されていることが推奨されますが、 DB側の事情によってPK制約が存在しない場合(かつ、実質的なPKがある場合)にこのプロパティが有効です。
- ビューなどそもそもPK情報を持たないオブジェクト
- 参照先のテーブルなどがPK制約を持っている場合(ビューの構造的・要件的にそのPKを扱いたい場合)にこのプロパティが有効です。
プロパティ
map型プロパティ で、"PKの名前" (任意だがユニークである必要がある)とそれに対するテーブル名とカラム名を定義します。
additionalPrimaryKeyMapの仕様 @additionalPrimaryKeyMap.dfprop
map:{
; [PK-name] = map:{
; tableName = [table-name] ; columnName = [column-name for PK]
}
; ...
}
以下、(*)の付いたプロパティは必須です。
PK-name (*)
PKの名前を指定します。mapのキーになっていて、ユニークである必要があります。 習慣的に、実際にDBに存在するPK制約を含めてもユニークな名前(かつ、大文字で "PK_" で始まるもの)を付けることをお奨めします。
tableName (*)
テーブル名を指定します。
- 値候補
- テーブルの名前 (自動生成対象になっていること)
- デフォルト
- なし
- 補足
-
- 大文字小文字の区別なし (但し実体と合わせることを推奨)
columnName (*)
PKとして扱うカラム名を指定します。
- 値候補
- カラムの名前 (自動生成対象になっていること)
- デフォルト
- なし
- 補足
-
- 大文字小文字の区別なし (但し実体と合わせることを推奨)
- 複合PKの場合は、"/" (スラッシュ)区切りで複数のカラムを指定
Example
e.g. 会員の会員IDをPKとして扱う場合 @additionalPrimaryKeyMap.dfprop
; PK_MEMBER = map:{
; tableName = MEMBER ; columnName = MEMBER_ID
}
e.g. 会員の会員IDと生年月日をPKとして扱う場合 @additionalPrimaryKeyMap.dfprop
; PK_MEMBER = map:{
; tableName = MEMBER ; columnName = MEMBER_ID/BIRTHDATE
}