[seasar-dotnet:2295] Re: [DBFlute.NET]OutsideSQLでの総件数取得
kubo
[E-MAIL ADDRESS DELETED]
2013年 6月 13日 (木) 22:21:56 JST
久保(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 メーリングリストの案内