DBFlute-1.0.5H Released

DBFlute-1.0.5H was released.
(ごーえいちです、2W5Hのえいちです)

DBFlute Top
Change Log
Migration Point

オープンソースプロダクト「DBFlute」
のリリース通知です。
(プログラマー向けの内容です)
ちょっとしたバグフィックスということで、静かなリリースです。

AdditionalForeignKeyで設定する、
業務的one-to-oneの固定条件(fixedCondition)の中で、
ForeignテーブルのForeignテーブルに対する
OverRelation ($$over(...)$$) を使った時、
そして、Foreignテーブル側の条件としてバインド変数を使った時

に、そのリレーションを使うと例外が発生してしまいました。

「ああぁ、なるほど」
とならない限りは重要ではありません。
ちょうどこの機能を利用しようとされたユーザーの方からの
フィードバックで、バグフィックスのみでのリリースとしました。

A <-* B *-> C

が one-to-many-one だとして、
C にとある条件を指定すると A -> B が業務的one-to-oneになると。
その C に対する条件をバインド変数にすると今回の現象が発生。

そもそも、そんな状況ってあるの?
って思われるかもしれませんが、意外にあるものです。
ないと思ってても、SQLのjoin句でベタベタとみんなが
その同じ結合条件を書いているかもしれません。
SQLのjoinのon句に別のテーブルのカラムを登場してたら要注意!

DBFluteは、その "お決まり" のリレーションを再利用します。
そして、固定条件が変わったときにでも一箇所直せばOKに。

「あっ、当てはまる!」と思ったら、
ぜひ、使ってみてくださいね。

業務的one-to-one - OverRelation
map:{
    ; localTableName  = AA    ; foreignTableName  = BB
    ; localColumnName = AA_ID ; foreignColumnName = BB_ID
    ; fixedCondition =
        $$over($foreignTable.cc)$$.CC_CODE = /*ccCode(String)*/
    ; fixedSuffix = AsBbCc
}