[Seasar-user:20323] Re: 【DBFlute】非主キーカラムが外部キーの場合のloadReferrer生成について

kubo [E-MAIL ADDRESS DELETED]
2010年 11月 10日 (水) 04:55:53 JST


久保(jflute)です。

小森さん、こんばんは

// Entity間のリレーション | DBFlute
http://dbflute.sandbox.seasar.org/ja/manual/function/ormapper/entity/relation.html#fktouq

つい先ほど書いたドキュメントですが、
「ユニーク制約を参照するFK制約」のリレーションに対する、
DBFluteにおける明確な状況とスタンスを記載しました。

正式サポートしないことに変わりはないのですが、
少なくとも SetupSelect と LoadReferrer はできるように
しようかと思います。で、LoadReferrer は 0.9.7.6 から。
(但し、複合ユニーク制約へのFKはテストされていません)

モジュール:DBFlute-0.9.7.6-SNAPSHOT
ランタイム:(ひとまず 0.9.7.5 のものでOK)

additionalForeignKeyMap.dfprop で設定すれば、
ユニーク制約を参照するFK制約でも、
LoadReferrer のメソッドが生成されるようになります。
ぜひお試し下さい。

小森さんのプロジェクトでアップグレードができない場合でも、
生成されたメソッドが ExBehavior で拡張回避する際の参考に
なるかと思います。
(バージョンが近ければコピーするだけで動くかも)

ちなみに、今後の参考までにということですが、
ユニーク制約を参照するFK制約はどういった業務で発生して
いるのでしょうか?PKでなくUQを参照する積極的な理由が
あるパターンをぜひ知りたいと考えます。
差し支えの無い程度で教えて頂ければありたがいです。

#
# テストは、dbflute-mysql-example の WxUniqueReferenceTest
# にて行っています。MySQLだと、JDBCからメタデータ取れて
# いるので(それはそれで想定外ですが)、additionalForeignKey を
# 設定しないでもメソッドが生成されています。
#

2010/11/10 KOMORI Yusuke <[E-MAIL ADDRESS DELETED]>:
> 久保さん
>
> こんばんは、小森です。
>
> DBFlute の loadReferrer について確認させてください。
>
> 2年ほど前、以下のスレッドで議論されていた、主キーではない
> カラムを外部キーにしている場合、loadReferrer メソッドが生成
> されない問題に関するものです。
>
> http://ml.seasar.org/archives/seasar-user/2008-September/015607.html
>
> このときは、回避策として ExtendedBehavior側で独自に
> loadReferrer メソッドを実装する手段が紹介されていますが、こ
> の状況はいまでも変わっていないでしょうか。
>
> 現在、同じ問題が発生しており、回避策を探しています。
> DBFlute の ChangeLog と JIRA のチケットを調べたところ、特
> に対応された様子はないようなのですが、念のために状況を確認し
> たいと思い、質問させて頂きました。
>
> お手数おかけしてすみませんが、よろしくお願いいたします。
>
> ----------------------------------------------
>  小森 裕介 / Yusuke Komori
>
>  E-Mail : [E-MAIL ADDRESS DELETED]
>    Blog : http://d.hatena.ne.jp/y-komori/
>     URL : http://www.littleforest.jp/
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


Seasar-user メーリングリストの案内