[seasar-dotnet:2296] Re: [DBFlute.NET]OutsideSQLでの総件数取得

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2013年 6月 14日 (金) 16:04:16 JST


久保 様

uparrowです。

お教えいただいた、もとのPmbを継承し、IsPagingプロパティがfalseを返すことで
目的の動作を実現できました。

ありがとうございました。


> 久保(jflute)です
> 
> uparrowさん、こんばんは
> 
> ささっとJava試したのですが、要領は同じです。
> ページングのPmbのExクラスで IsPaging をオーバーライドして、
> 問答無用で false を戻すようにして、
> outsideSql().entityHandling().selectEntity() で Integer.class を
> 戻り値に指定すれば、カウントを取得することができます。
> 
> // Exクラス
> public class PurchaseMaxPriceMemberPmb extends BsPurchaseMaxPriceMemberPmb {
>     @Override
>     public boolean isPaging() {
>         return false;
>     }
> }
> 
> // 呼び出し
> PurchaseMaxPriceMemberPmb pmb = new PurchaseMaxPriceMemberPmb();
> memberBhv.outsideSql().entityHandling()
>     .selectEntity(MemberBhv.PATH_selectPurchaseMaxPriceMember, pmb,
> Integer.class);
> 
> で、Exクラスにベタで書いちゃったらもちろん、
> 通常のページングができなくなってしまいますので、
> Exクラスで「問答無用カウント検索モード」プロパティを作成して、
> 呼び出し側で選べるようにしておくと良いと思います。
> 
> public class PurchaseMaxPriceMemberPmb extends BsPurchaseMaxPriceMemberPmb {
>     protected boolean _問答無用カウント検索モード;
> 
>     public void prepare問答無用カウント検索モード() {
>         _問答無用カウント検索モード = true;
>     }
> 
>     @Override
>     public boolean isPaging() {
>         return _問答無用カウント検索モード ? false : super.isPaging();
>     }
> }
> 
> 
> ...
> ......
> っって、ここまで書いておいて、
> そっか継承モデルじゃなくって partial だったから、
> オーバーライドできないですねー(><。
> なので、カウント検索用のPmbクラスを手動作成して、
> PurchaseMaxPriceMemberPmbを継承して
> オーバーライドすると良いでしょう。
> (したら、変な名前のプロパティは不要ですね)
> 
> 
> ※今後もpartialしなきゃ良かったとずっと言い続けそう...
> 
> 
> 2013/6/13  <uparrow @ nifty.com>:
> > 志村さん
> > uparrowです。
> >
> > アドバイスありがとうございます。
> > 通常のカウントであれば、こちらの方法を使っているのですが、
> > 複雑な問い合わせのため、OutsideSQLを利用した際のカウントの方法が
> > 知りたかったのです。
> >
> > よろしくお願いします。
> >
> >> 志村です。
> >>
> >> http://dbflute.seasar.org/ja/manual/function/ormapper/behavior/select/selectcount.html
> >>
> >> で良いのでは。
> >>
> >>
> >> 2013年6月13日 9:48 <uparrow @ nifty.com>:
> >>
> >> > uparrowと申します。
> >> >
> >> > OutsideSQLを利用する場面で
> >> > ページング検索を行う他に、同じSQLの総件数のみ取得したい場面があります。
> >> >
> >> > ページング検索用にSQLファイルを作成
> >> > 総件数取得用にSQLファイルを作成しようかと思うのですが
> >> > select句が違うだけでほぼ同じSQL文なので
> >> > ちょっと無駄だなぁと思っています。
> >> >
> >> > select count(*)
> >> > の値だけを取得するよい方法は無いでしょうか?
> >> >
> >> > よろしくお願いいたします。
> >> >
> >> > _______________________________________________
> >> > seasar-dotnet mailing list
> >> > seasar-dotnet @ ml.seasar.org
> >> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >> >
> >
> > _______________________________________________
> > seasar-dotnet mailing list
> > seasar-dotnet @ ml.seasar.org
> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet



seasar-dotnet メーリングリストの案内