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

吉岡 武志/インフォセンス [E-MAIL ADDRESS DELETED]
2006年 9月 20日 (水) 22:55:24 JST


お世話になります。吉岡です。

S2Daoを使用して、For Updateしたselect文のSQLを発行したところ
「FOR UPDATE 文節が読み取り専用カーソルに指定されている 」といった例外が発
生しました。
※ちなみに、S2DAOを使用せずに、直接JDBCで同じSQLを発行したところ例外は発生し
ませんでした。

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 メーリングリストの案内