[Seasar-user:4993] Re: ForUpdate のSQLで例外が発生する

Hirotaka HONMA [E-MAIL ADDRESS DELETED]
2006年 11月 4日 (土) 09:04:28 JST


本間です。

on Thu, 19 Oct 2006 10:42:07 +0900
in [Seasar-user:4820] Re: ForUpdate のSQLで例外が発生する
"吉岡 武志/インフォセンス" <[E-MAIL ADDRESS DELETED]> wrote:

> > ちょっとわかりませんでしたので確認させてください。
> > 正常というのは、
> > - for updateを含んだSQL文
> > - ページングするSQL文
> > - for updateを含みページングするSQL文 (これは無いかも)
> > のどれでしょうか?
> >
> > 3つ目はともかく、1つ目と2つ目がOKでしたら、
> > PagerStatementFactoryを使わずにBasicStatementFactoryを使うよ
> > うにdiconの設定を変えれば良さそうに思います。
>
> 説明不足で申し訳ありませんでした。
>
> Preparedstatementを生成する際(PagerStatementFactoryクラス内)にオプション
> で、
> 「ResultSet.TYPE_SCROLL_INSENSITIVE」と「ResultSet.CONCUR_READ_ONLY」を外し
> て、
> 「for updateを含んだSQL文」が正常に実行されたということでした。

ありがとうございます、状況を理解できました。

> 「ページングするSQL文」に関しては、前回は試していなかったのですが
> 「ResultSet.TYPE_SCROLL_INSENSITIVE」と「ResultSet.CONCUR_READ_ONLY」を外し
> て試して
> みたところSQLエラー(Invalid operation: result set close)が発生しました。

ページングする場合にはTYPE_SCROLL_INSENSITIVEとCONCUR_READ_ONLY
は必要ということですね。ご確認ありがとうございます。m(__)m

S2Dao側の対応方針としては、PagerStatementFactoryにページング
する場合/しない場合のif文を設けて、ページングする場合には
TYPE_SCROLL_INSENSITIVEとCONCUR_READ_ONLYをしていするように
したいと思います。
(PagerResultSetFactoryWrapperにあるif文と同じものです)

これで、1と2のケースはOKになるでしょう。
3のケースはダメですが、

> 「for updateを含みページングするSQL文」に関しては、用途的にありえないと思いま
> したので
> 試していません。

私も用途的にありえないと思いますので、上記対応で充分と思いま
す。

---
本間 宏崇 /** Hirotaka HONMA */
[E-MAIL ADDRESS DELETED]
ARK Systems Co., Ltd. : 株式会社アークシステム
http://www.arksystems.co.jp/



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