[Seasar-user:16663] Re: 再発! Pagerのoffset値がレコード件数より大きい場合にSQLExceptionが発生する問題
Oonaka Hiroyuki
[E-MAIL ADDRESS DELETED]
2009年 1月 13日 (火) 23:51:21 JST
大中(せと)です。
j2ee.diconが見れないので推測まじりになりますが...
> <component
> class="org.seasar.dao.impl.DaoMetaDataFactoryImpl">
> <arg>j2ee.dataSource</arg>
> <arg>
> <component class="org.seasar.dao.pager.PagerStatementFactory"/>
> </arg>
> <!--
> <arg>
> <component class="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
> </arg>
> -->
> <arg>resultSetFactory</arg>
> <arg>annotationReaderFactory</arg>
> </component>
ここでDaoMetaDataFacotryImplのコンストラクタ・インジェクションで
PagerStatementFactoryを渡していますが、このあとにsetterインジェク
ションでDaoMetaDataFactoryImpl#setStatementFactoryが呼ばれています。
ここで、PagerStatementFactoryでなくConfigurableStatementFactory等が
DIされているのでないかと推察されます。
対策としては、PagerStatemmentFactoryがsetterでDIされるように、
現在コンストラクタ・インジェクションされている
・DataSource
・StatementFactory
・ResultSetFactory
・AnnotationReaderFactory
をsetterインジェクションされるように、dao.diconもしくはj2ee.diconを
修正するといいのではないかと思います。
>
> 上記の問題が S2Daoのバージョン 1.0.41-RC1
> までは不具合が起きなかった(SqlExceptionにならなかった)
> のですが、1.0.41-RC1以降のバージョン
> 1.0.41〜1.0.49
> でまったく同じ現象が再発し、
> SqlExceptionが発生します。
1.0.41以降、StatementFactoryがsetterインジェクションされるように
なったためだと思います。
http://svn.seasar.org/browse?view=rev&root=s2dao&revision=821
--
Oonaka Hiroyuki <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内