[Seasar-user:9744] Re: [S2Pager]拡張PagerCondition使用時にSQLException

Kazuya Sugimoto [E-MAIL ADDRESS DELETED]
2007年 8月 7日 (火) 14:43:27 JST


杉本です。

私の方にも社内でS2Dao-1.0.45にあげると拡張PagerConditionがうまくうごかない
と相談が来ました。

PagerConditionを継承して追加したプロパティをバインド変数で利用できないようです。
prepareStatementにパラメータがセットされていないようです。

そして native SQL, base SQL, execute SQLのログでパラメータがセットされる
はずの部分が ? のままになっています。


07/08/07 に koichi さんは書きました:
> koichiです。
>
> お世話になっております。
>
> S2-2.4.16
> S2Dao-1.0.45(S2Pager)
> Oracle10g
>
> 上記の環境で早速PagerResultSetFactoryRownumWrapperを使用させてもらっているのですが
> SQLExceptionが発生してしまいます。
>
> 実装としては
> PagerConditionをimplementsしている検索条件クラスに追加でプロパティを持たせた上
> Daoのselectメソッドに引数で渡しています。
>
>  @SqlFile
>  @Arguments("condition")
>  public List<CompanyBean>
> selectByPagerCondition(CompanyPagerCondition condition);
>
> これで PagerConditionの条件のみ有効の場合は問題ないのですが、
> conditionに定義している、例えば企業名などの条件も有効になると
> カウントを取るSQL実行の時点でSQLException: INまたはOUTパラメータがありません が発生します。
>
>
> デバッグしてみますと
> org.seasar.dao.pager.AbstractPagerResultSetFactory#getCount(PreparedStatement
> ps, String baseSQL)の
> L183 psCount = ps.getConnection().prepareStatement(countSQL);
> にて、psにはパラメータ情報があるのですが、
> psCount内にパラメータが含まれていない?ようでした。
> PreparedStatementの内容にくわしくないのでよくわからないのですが
> 上記の記述でパラメータ情報がコピーされるのでしょうか
> baseSQLの方は、SqlLog#getRawSql() の未加工のSQLが渡ってくるということなので
> たぶんpsCount内にパラメータ情報が入っていないのが原因だろうと思っているのですが・・・
>
> ご意見をお聞かせ下さい。
> よろしくお願いします。
>
>
> ________________________________
> ダウンロード無料!マイクロソフトの最新ブラウザMSN版を今すぐ体験
> http://promotion.msn.co.jp/ie7/
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>


-- 
Kazuya Sugimoto
Microsoft MVP Visual Developer - Solutions Architect
http://d.hatena.ne.jp/sugimotokazuya/



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