[Seasar-user:15238] Re: [DBFlute] Viewに対してadditionalForeignKeyMapの設定
西山 はじめ
[E-MAIL ADDRESS DELETED]
2008年 7月 31日 (木) 16:43:42 JST
お世話になっております。西山です。
いろいろとお手数おかけしましたが、解決いたしました。
> 試しに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 メーリングリストの案内