[Seasar-user:13181] Re: 【DBFlute】unionを使用したPaging

kubo [E-MAIL ADDRESS DELETED]
2008年 3月 7日 (金) 17:51:20 JST


久保です。

森さん、こんにちは

こちら現象再現いたしました。
https://www.seasar.org/issues/browse/DBFLUTE-216

DBFluteOracleExampleにて、修正したDBFluteで動作確認いたしました。
https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-oracle-example

MemberCBTestのtest_selectPage_union_existsSubQuery_Tx()メソッドです。

もしよければ、このDBFluteOracleExampleのDBFlute-0.6.6(SNAPSHOT)を
使ってご確認頂けませんでしょうか?
(昨日のスキーマ付きSQLの修正も含まれております)


2008/3/7 森和紀 <[E-MAIL ADDRESS DELETED]>:
> お世話になっております。
>  森と申します。
>
>  union を使用した Paging(selectPage)を行なうと、union のSQLにもPaging用のSQLが
>  重複してしまい、エラーとなります。
>  Paging なしの場合(selectList)は問題ありません。
>
>  Version:DBFlute 0.6.4
>
>  union の使い方に問題があるのでしょうか?
>  ご確認いただければと思います。
>
>  Java の実装
>  -----------------------------------------------------------
>  MessageTextCB cb = new MessageTextCB();
>  cb.query().setTextId_Equal("1");
>  TcMessageTextCB ucb = new TcMessageTextCB();
>  ucb.query().setTextId_Equal("2");
>
>  cb.fetchFirst(5);
>  cb.fetchPage(1);
>
>  cb.union(ucb.query());
>
>  messageTextBhv.selectPage(cb);
>
>  発行されたSQL
>  -----------------------------------------------------------
>  select
>     *
>  from
>     (
>         select
>             base.*,
>             rownum as rn
>         from
>             (
>                 select
>                     dflocal.TEXT_ID as TEXT_ID,
>                     dflocal.MESSAGE_ID as MESSAGE_ID
>                 from
>                     MESSAGE_TEXT
>                     dflocal
>                 where
>                         dflocal.TEXT_ID = ?
>                 union
>                 select
>                     *
>                 from
>                     (
>                         select
>                             base.*,
>                             rownum as rn
>                         from
>                             (
>                                 select
>                                     dflocal.TEXT_ID as TEXT_ID,
>                                     dflocal.MESSAGE_ID as MESSAGE_ID
>                                 from
>                                     MESSAGE_TEXT
>                                     dflocal
>                                 where
>                                         dflocal.TEXT_ID = ?
>                             )
>                             base
>                     )
>                 where
>                         rn > 0
>                     and rn <= 5
>
>
>  以上、よろしくお願いいたします。
>  _______________________________________________
>  Seasar-user mailing list
>  [E-MAIL ADDRESS DELETED]
>  https://ml.seasar.org/mailman/listinfo/seasar-user
>


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