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