[Seasar-user:15239] Re: [DBFlute] Viewに対してadditionalForeignKeyMapの設定

kubo [E-MAIL ADDRESS DELETED]
2008年 7月 31日 (木) 17:53:15 JST


久保(jflute)です。

>> 試しにMEMBER_WITHDRAWALを
>> MEMBER_LOGINに変えて同じことを試したところ、
>> BsMemberViewBhvにloadMemberLoginList()が
>> 生成されました。
>
> 生成されない条件がわかりました。FK定義をすべて小文字で記述し ていたためです。
>
> ためしに大文字ですべて記述したところ、問題なく生成されました。

大文字小文字区別なくしていたつもりですが、

    ; FK_PURCHASE_SUMMARY_PRODUCT = map:{
        ; localTableName  = purchase   ; foreignTableName  = summary_product
        ; localColumnName = product_id ; foreignColumnName  = product_id
    }

でこちらでも再現いたしました。
foreignColumnNameだけが一箇所大文字小文字を区別して、
比較してしまっている部分がありました。(他の要素はOK)
こちらは直しておきます。失礼しました。
ご報告ありがとうございました。


> SQL予約語や構文を大文字、カラム名、テーブル名を小文字で書く

余談ですが、やはりこの辺は様々ですね。
自分は全く逆が習慣となってしました。
(どのDBで育ったかにも依存しそうですね)

2008/7/31 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
> お世話になっております。西山です。
>
> いろいろとお手数おかけしましたが、解決いたしました。
>
>> 試しにMEMBER_WITHDRAWALを
>> MEMBER_LOGINに変えて同じことを試したところ、
>> BsMemberViewBhvにloadMemberLoginList()が
>> 生成されました。
>
> 生成されない条件がわかりました。FK定義をすべて小文字で記述し ていたためです。
>
> ためしに大文字ですべて記述したところ、問題なく生成されました。
>
> Oracle、h2を含めほぼすべてのDBが大文字小文字を区別しない為、 SQL予約語や構文を大文字、カラム名、テーブル名を小文字で書く
> 習慣がついていました。(CSEというツールでSQL整形すると、SQL 予約語が自動で大文字になるというのも理由ですが)
>
> ご迷惑をおかけしました。ですが、大文字小文字区別なく生成でき るとありがたいです。
>
>>>> 3.additionalForeignKeyMapに以下を追加
>>>>    ; FK_MEMBER_VIEW = map:{
>>>>        ; localTableName  = MEMBER_WITHDRAWAL   ; foreignTableName  =
>>>> MEMBER_VIEW
>>>>        ; localColumnName = MEMBER_ID ; foreignColumnName = MEMBER_ID
>>>>    }
>>> すいません、こちらも「one-to-one」になりますので、
>>> loadXxx()は生成されません。
>>> (MEMBER_WITHDRAWALのMEMBER_IDがPKなため)
>
> one-to-oneでload~を生成しようとしていたのは間違えていました。
> 申し訳ありません。
>
> 以上お手数ですがよろしくお願いいたします。
>
>>>
>>> かわりにMemberViewCBに
>>> setupSelect_MemberWithdrawalAsOne()
>>> が生成されていると思います。
>>>
>>>
>>> 2008/7/31 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>>>
>>>> お世話になっております。西山です。
>>>>
>>>> 追加ですが、以下の設定ですとload~メソッドが生成されません。
>>>>
>>>> 1.replace-schemaに以下を追加
>>>> CREATE VIEW MEMBER_VIEW AS
>>>> SELECT * FROM MEMBER;
>>>>
>>>> 2.additionalPrimaryKeyMapに以下を追加
>>>>   ; PK_MEMBER_VIEW = map:{
>>>>       ; tableName = MEMBER_VIEW ; columnName = MEMBER_ID
>>>>   }
>>>> 3.additionalForeignKeyMapに以下を追加
>>>>   ; FK_MEMBER_VIEW = map:{
>>>>       ; localTableName  = MEMBER_WITHDRAWAL   ; foreignTableName  =
>>>> MEMBER_VIEW
>>>>       ; localColumnName = MEMBER_ID ; foreignColumnName = MEMBER_ID
>>>>   }
>>>> 4.replace-schemaから以下を削除
>>>> ALTER TABLE MEMBER_WITHDRAWAL ADD CONSTRAINT FK_MEMBER_WITHDRAWAL_MEMBER
>>>>       FOREIGN KEY (MEMBER_ID) REFERENCES MEMBER (MEMBER_ID) ;
>>>>
>>>> 上記の設定後、generate.batを実行しましたが、MemberViewBhvに はload~はありませんでした。
>>>> MemberWithDrowalCBには、setupSelect_MemberViewメソッドが存在 します。
>>>>
>>>>> ; FK_SUMMARY_PRODUCT_PRODUCT_STATUS = map:{
>>>>>>
>>>>>>  ; localTableName  = PRODUCT_STATUS    ; foreignTableName  =
>>>>>> SUMMARY_PRODUCT
>>>>>>  ; localColumnName = PRODUCT_STATUS_CODE ; foreignColumnName  =
>>>>>> PRODUCT_STATUS_CODE
>>>>>> }
>>>>
>>>> すいません。こちらはそもそもPKからFKを張ることなんてないので こちらは無視していただいて結構です。
>>>>
>>>> 以上よろしくお願いいたします。
>>>>
>>>>
>>>>> は、自分もやってみましたが確かに生成されません。
>>>>> この場合はlocalColumnNameのPRODUCT_STATUS_CODEが
>>>>> PrimaryKeyのため、OneToOneのリレーションと判断されて
>>>>> 生成されていないかもしれません。(調査中)
>>>>> (OneToOneの場合はloadXxx()はそもそも生成されません)
>>>>>
>>>>>
>>>>> 2008/7/31 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>>>>>
>>>>>> お世話になっております。西山です。
>>>>>>
>>>>>> 0.7.7を使用してみたのですが、やはりViewだとload~メソッドが 生成されません。
>>>>>>
>>>>>> exampleの方も、localがView で foreignがTableとなっています。
>>>>>> localがTable、foreginがViewに書き換えてみましたが、load~メ ソッドは生成されませんでした。
>>>>>>
>>>>>> 変更したのは以下の内容です。
>>>>>>
>>>>>> ; FK_SUMMARY_PRODUCT_PRODUCT_STATUS = map:{
>>>>>>  ; localTableName  = PRODUCT_STATUS    ; foreignTableName  =
>>>>>> SUMMARY_PRODUCT
>>>>>>  ; localColumnName = PRODUCT_STATUS_CODE ; foreignColumnName  =
>>>>>> PRODUCT_STATUS_CODE
>>>>>> }
>>>>>>
>>>>>> 以上お手数ですがよろしくお願いいたします。
>>>>>>
>>>>>> [2008/07/30 22:53] kubo さんは書きました。:
>>>>>>>
>>>>>>> 久保(jflute)です。
>>>>>>>
>>>>>>>> 出来れば欲しいです。
>>>>>>>>
>>>>>>>> 今、二つのアプリケーションから利用されるDB(片方は、参照Only
>>>>>>>> のマスタ系テーブルのみ利用)があります。
>>>>>>>> 過去の遺産の為か、テーブル名・カラム名とも暗号となっているた
>>>>>>>> め、Viewを利用してわかりやすくしようとしています。
>>>>>>>> テーブル自体を変更できれば楽なのですが、今回手を加えないアプ
>>>>>>>> リケーションの方でマスタ系メンテナンスを行っているため、変更
>>>>>>>> できません。
>>>>>>>
>>>>>>> http://dbflute.sandbox.seasar.org/download/dbflute/dbflute-0.7.7.zip
>>>>>>> にて対応しました。確認お願いできますでしょうか?
>>>>>>>
>>>>>>> dbflute-basic-exampleにて、
>>>>>>> 実際にVIEWを生成してadditionalPrimaryKeyMap.dfpropで
>>>>>>> 定義をしております。こちら参考にして下さい。
>>>>>>>
>>>>>>> 2008/7/30 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>>>>>>>
>>>>>>>> お世話になっております。西山です。
>>>>>>>>
>>>>>>>>> 取り急ぎお答え致します。
>>>>>>>>> こちら、VIEWに「PK」の情報がないため、
>>>>>>>>> ViewのBehaviorにloadXxx()が設定されません。
>>>>>>>>
>>>>>>>> 了解いたしました。PKの情報を利用しているのですね。
>>>>>>>>
>>>>>>>>> #
>>>>>>>>> # additionalPrimaryKeyMapみたいな設定があった方が
>>>>>>>>> # よいですかね。。。
>>>>>>>>> #
>>>>>>>>
>>>>>>>> 出来れば欲しいです。
>>>>>>>>
>>>>>>>> 今、二つのアプリケーションから利用されるDB(片方は、参照Only
>>>>>>>> のマスタ系テーブルのみ利用)があります。
>>>>>>>> 過去の遺産の為か、テーブル名・カラム名とも暗号となっているた
>>>>>>>> め、Viewを利用してわかりやすくしようとしています。
>>>>>>>> テーブル自体を変更できれば楽なのですが、今回手を加えないアプ
>>>>>>>> リケーションの方でマスタ系メンテナンスを行っているため、変更
>>>>>>>> できません。
>>>>>>>>
>>>>>>>> 回避手段としては、常にlocal側からJoinするか、OutsideSQLで可
>>>>>>>> 能ですので、必須ではありません。
>>>>>>>>
>>>>>>>> ですが、Viewでもテーブルと同じように利用できれば非常に有り難
>>>>>>>> いです。
>>>>>>>>
>>>>>>>> お忙しいところ申し訳ありませんが、ご検討お願いできないでしょ
>>>>>>>> うか。
>>>>>>>>
>>>>>>>>> 2008/7/30 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>>>>>>>>>
>>>>>>>>>> お世話になっております。西山と申します。
>>>>>>>>>>
>>>>>>>>>> dbflute_exampleを使用し、以下の設定を追加しました。
>>>>>>>>>>
>>>>>>>>>> Viewを作成し、以下のようなFKの設定をしましたが、ForeignTable
>>>>>>>>>> 側にload~メソッドが生成されません。
>>>>>>>>>> LocalTable側には、setup~メソッドが生成されています。
>>>>>>>>>>
>>>>>>>>>> # replace-schema
>>>>>>>>>>
>>>>>>>>>> CREATE VIEW MEMVER_VIEW AS
>>>>>>>>>> SELECT * FROM MEMBER;
>>>>>>>>>>
>>>>>>>>>> # additionalForeignKeyMap.dfprop
>>>>>>>>>>
>>>>>>>>>> ; FK_MEMVER_VIEW_LOGIN = map:{
>>>>>>>>>>    ; localTableName  = MEMBER_LOGIN    ;
>>>>>>>>>> foreignTableName  = MEMVER_VIEW
>>>>>>>>>>    ; localColumnName = MEMBER_ID ; foreignColumnName =
>>>>>>>>>> MEMBER_ID
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> 環境は以下のとおりです。
>>>>>>>>>>
>>>>>>>>>> DBFlute:0.7.6
>>>>>>>>>> DB:h2database
>>>>>>>>>> dbflute_example使用
>>>>>>>>>>
>>>>>>>>>> Viewでの制限でしょうか?
>>>>>>>>>> 以上よろしくお願いいたします。
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>>>> 株式会社フジミック システム開発センター ソフト開発2部
>>>>>>>>>> 西山 創
>>>>>>>>>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>>>>>>>>>
>>>>>>>>>> 〒140-0002 品川区東品川3-32-42 フジテレビ別館7F
>>>>>>>>>> [TEL]:03-5495-1060
>>>>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Seasar-user mailing list
>>>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>>>>>>
>>>>>>>> --
>>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>> 株式会社フジミック システム開発センター ソフト開発2部
>>>>>>>> 西山 創
>>>>>>>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>>>>>>>
>>>>>>>> 〒140-0002 品川区東品川3-32-42 フジテレビ別館7F
>>>>>>>> [TEL]:03-5495-1060
>>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Seasar-user mailing list
>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Seasar-user mailing list
>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>> 株式会社フジミック システム開発センター ソフト開発2部
>>>>>> 西山 創
>>>>>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>>>>>
>>>>>> 〒140-0002 品川区東品川3-32-42 フジテレビ別館7F
>>>>>> [TEL]:03-5495-1060
>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>
>>>>>> _______________________________________________
>>>>>> Seasar-user mailing list
>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>>
>>>>> _______________________________________________
>>>>> Seasar-user mailing list
>>>>> [E-MAIL ADDRESS DELETED]
>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>> 株式会社フジミック システム開発センター ソフト開発2部
>>>> 西山 創
>>>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>>>
>>>> 〒140-0002 品川区東品川3-32-42 フジテレビ別館7F
>>>> [TEL]:03-5495-1060
>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>
>>>> _______________________________________________
>>>> Seasar-user mailing list
>>>> [E-MAIL ADDRESS DELETED]
>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>>
>>
>
>
> --
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 株式会社フジミック システム開発センター ソフト開発2部
>  西山 創
> [E-mail]:[E-MAIL ADDRESS DELETED]
>
> 〒140-0002 品川区東品川3-32-42 フジテレビ別館7F
> [TEL]:03-5495-1060
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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