[Seasar-user:13336] Re: 【DBFlute】ConditionBean による複数の親の親(おじいちゃん)の取得

kubo [E-MAIL ADDRESS DELETED]
2008年 3月 19日 (水) 00:42:22 JST


久保です。

森さん

了解です。よろしくお願いします。

確認ですが、以下のことを確認お願いします。

1. ログ上のSQL文のSelect句に取得できなかった
 テーブルのカラムが存在するかどうか?
 (なければ、SQL生成時点で既におかしな処理がありそうです)


2. マッピング時の対象になっているかどうか?

allcommon.s2dao.S2DaoMetaDataExtension$RelationRowCreatorExtension
のsetupPropertyCache()メソッド1185行目付近に、
以下のログを出力して下さい。

// Do only selected foreign property for performance if condition-bean exists.
if (hasConditionBean(res)) {
    final LdConditionBean cb =
LdConditionBeanContext.getConditionBeanOnThread();
    // ここから
    boolean kokonoHantei =
cb.getSqlClause().hasSelectedForeignInfo(res.getRelationNoSuffix());
    System.out.println("***: " + res.getRelationNoSuffix() + " = " +
kokonoHantei);
    // ここまで
    if (!cb.getSqlClause().hasSelectedForeignInfo(res.getRelationNoSuffix())) {
        return;
    }
}

このログに、
「1」で確認した該当テーブルのAlias名のSuffixの
「リレーションNO(_0_2とか)」が出力されていること、
そして、それが「true」であること。
これをご確認ください。

それでも不審点がなければ、そのすぐ上のメソッドで
setupRelationAllValue()あたりを探ることで状況がわかるかも
なのですが、ひとまず「1」と「2」を確認させて下さい。

よろしくお願いします。

2008/3/18 森和紀 <[E-MAIL ADDRESS DELETED]>:
> 久保さん
>
>  お世話になっております。森です。
>
>  > もしかしたら、さらに限定的な現象かもしれませんので、
>  > 発生したQUERYと別のQUERYでも発生するかどうか
>  > 確認して頂けますでしょうか?
>  確認してみます。(明日になってしまうと思います。)
>
>  以上です。
>
>  08/03/18 に kubo<[E-MAIL ADDRESS DELETED]> さんは書きました:
>
>
> > 久保です。
>  >
>  > 森さん、こんにちは
>  >
>  > ご指摘頂いた現象ですが、こちらで再現がしません。
>  >
>  > DBFluteBasicExample等で、同様の検索をしてみましたが、
>  > 値が取得されます。(PurchaseCBTestにて実装しています)
>  > https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-basic-example
>  >
>  > もしかしたら、さらに限定的な現象かもしれませんので、
>  > 発生したQUERYと別のQUERYでも発生するかどうか
>  > 確認して頂けますでしょうか?
>  >
>  >
>  > 2008/3/18 森和紀 <[E-MAIL ADDRESS DELETED]>:
>  > > お世話になります、森と申します。
>  > >
>  > >  ConditionBean による複数の親の親(おじいちゃん)の取得で確認したいことがあります。
>  > >
>  > >  親の親(おじいちゃん)の取得は「withXXX」メソッドを使用しているのですが、
>  > >  同じ親テーブルに対して複数の親の親(おじいちゃん)を取得することができません。
>  > >  ※1つだけは取得できます。
>  > >
>  > >  以前使用していたバージョンでは取得できていたのですが、最新のバージョンで取得
>  > >  することができません。
>  > >  何か変更があったのでしょうか?
>  > >
>  > >  現在のバージョン DBFlute 0.6.6
>  > >  以前のバージョン DBFlute 0.5.5
>  > >
>  > >  <実装>
>  > >  PurchaseDetailCB cb = new PurchaseDetailCB ();
>  > >
>  > >  cb.setupSelect_Purchase().withMember();
>  > >  cb.setupSelect_Purchase().withProduct();
>  > >
>  > >  cb.query().setPurchaseDetailId_Equal(2002);
>  > >
>  > >  PurchaseDetail result = purchaseDetailBhv.selectEntity(cb);
>  > >
>  > >  result.getPurchase().getMember(); // こっちは取れる
>  > >  result.getPurchase().getProduct(); // nullとなってしまう
>  > >
>  > >  以上、よろしくお願いします。
>  > >  _______________________________________________
>  > >  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
>  >
>  _______________________________________________
>  Seasar-user mailing list
>  [E-MAIL ADDRESS DELETED]
>  https://ml.seasar.org/mailman/listinfo/seasar-user
>


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