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

Yasuo Higa [E-MAIL ADDRESS DELETED]
2006年 9月 21日 (木) 09:34:01 JST


ひがです。

> お世話になります。吉岡です。
> 
> S2Daoを使用して、For Updateしたselect文のSQLを発行したところ
> 「FOR UPDATE 文節が読み取り専用カーソルに指定されている 」といった例外が発
> 生しました。
> ※ちなみに、S2DAOを使用せずに、直接JDBCで同じSQLを発行したところ例外は発生し
> ませんでした。
> 
ResultSetやPreparedStatementは、ResultSetFactoryや
PreparedStatementFactoryでカスタマイズできるので、
直接JDBCで実行したときと同じ設定にしていただける
でしょうか。

Pagerを使わない場合はどうですか。

後、DB2使いの方で同じような経験をされた方は
いらっしゃらないでしょうか。

よろしくお願いします。

> dao.diconの設定で、「useScrollCursor」プロパティに「true」を設定しているのが影
> 響しているか
> と思い、「false」にしてみましたが結果は同じでした。
> 
> dicon等の設定で、カーソルの指定をどこで行っているかわかりませんでした。
> 
> 恐れ入りますが、対応方法を何かご存知の方はいらっしゃいませんでしょうか?
> 
> よろしくお願いします。
> 
> 【 実行環境 】
> ・s2-extension-2.3.11
> ・s2-framework-2.3.11
> ・s2-dao-1.0.35.jar
> ・DB2 V8.2
> 
> 【 dao.dicon 】
> <?xml version="1.0" encoding="Shift_JIS"?>
> <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
>       "components21.dtd">
> <components namespace="dao">
>       <include path="j2ee.dicon" />
> 
>       <component class="org.seasar.dao.impl.FieldAnnotationReaderFactory"
> name="annotationReaderFactory" />
>       <component class="org.seasar.dao.pager.PagerResultSetFactoryWrapper"
> name="resultSetFactory">
>             <arg>
>                   <component class
> ="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
>             </arg>
>             <property name="useScrollCursor">true</property>
>       </component>
>       <component class="org.seasar.dao.impl.DaoMetaDataFactoryImpl">
>             <arg>j2ee.dataSource</arg>
>             <arg>
>                   <component class
> ="org.seasar.dao.pager.PagerStatementFactory"/>
>             </arg>
>             <arg>resultSetFactory</arg>
>             <arg>annotationReaderFactory</arg>
>             <property name="daoSuffixes">new String[]{"Dao"}</property>
>             <property name="insertPrefixes">new String[]{"add"}</property>
>             <property name="deletePrefixes">new String[]
> {"remove"}</property>
>             <property name="updatePrefixes">new String[]
> {"modify"}</property>
>       </component>
>       <component class="org.seasar.dao.pager.PagerS2DaoInterceptorWrapper"
> name="interceptor">
>             <arg>
>                   <component class
> ="org.seasar.dao.interceptors.S2DaoInterceptor" name="s2dao" />
>             </arg>
>       </component>
> 
>       <component class="org.seasar.dao.impl.ValueTypeFactoryImpl"/>
> </components>
> 
> 【エラー内容】
> org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例
> 外(ErrorCode=-228, SQLState=42620)が発生しました。
> 理由はorg.seasar.framework.exception.SSQLException: [ESSR0072]SQLで例外(SQL
> =[
> select aaaa, bbbb, cccc
> from hoge_tb
> where
>       aaaa = ?
> and bbbb = ?
> and cccc = ?
> for update
>    ], ErrorCode=-228, SQLState=42620)が発生しました
>       at
> org.seasar.framework.util.PreparedStatementUtil.executeQuery(PreparedStatementUtil.java:37)
>       at
> org.seasar.extension.jdbc.impl.BasicResultSetFactory.createResultSet(BasicResultSetFactory.java:36)
>       at
> org.seasar.dao.pager.PagerResultSetFactoryWrapper.createResultSet(PagerResultSetFactoryWrapper.java:63)
>       at
> org.seasar.extension.jdbc.impl.BasicSelectHandler.createResultSet(BasicSelectHandler.java:173)
>       at
> org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler.java:162)
>       at
> org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler.java:135)
>       at
> org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler.java:120)
>       at
> org.seasar.dao.impl.SelectDynamicCommand.execute(SelectDynamicCommand.java:55)
>       at
> org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:53)
>       at
> org.seasar.dao.pager.PagerS2DaoInterceptorWrapper.invoke(PagerS2DaoInterceptorWrapper.java:64)
>       at
> org.seasar.framework.aop.impl.NestedMethodInvocation.proceed(NestedMethodInvocation.java:43)
>       at
> org.seasar.framework.aop.interceptors.InterceptorChain.invoke(InterceptorChain.java:42)
> 
> 
> - 以上 -
> 
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://www.seasar.org/mailman/listinfo/seasar-user



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