我們使用Spring 2.6,我們在我們的系統中使用jdbcTemplate以及NamedparameterJdbcTemplate,配置如下。NamedParameterJdbcTemplate設置連接獲取大小屬性
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dataSource"></constructor-arg>
<property name="fetchSize" value="500>
</bean>
<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dataSource"></constructor-arg>
</bean>
雖然jdbcTemplate具有屬性「fetchSize」,但namedParameterJdbcTemplate沒有。我想設置FETCHSIZE這個,所以我想出了另一個構造函數是NamedParameterJdbcTemplate它接受「JdbcTemplate的」,所以我配置我的豆如下使用的500,其已經被配置爲JdbcTemplate的FETCHSIZE:
<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="jdbcTemplate"></constructor-arg>
</bean>
但在此之後,我得到以下例外幾個查詢:
com.sybase.jdbc3.jdbc.SybSQLException:光標'jconnect_implicit_16'被聲明與FOR UPDATE子句。這個光標被發現是隻讀的。
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:121)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:322)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:582)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:616)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:641)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:657)
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:123)
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.query(NamedParameterJdbcTemplate.java:127)
有人可以建議其解決方案嗎?
您可以添加其中一個失敗查詢的示例嗎? – 2012-02-23 10:55:51
Hi Tomas,其中一個查詢是:SELECT TCRT.assessment_id,TCRT.asset_id,ROUND(TCRT.rcrt_value,0)as rcrt_value,ra_rcrt_codes.rcrt_name,ra_rcrt_codes.rcrt_short_desc,ra_rcrt_codes.rcrt_long_desc FROM ra_assess_rcrt_values TCRT TCRT內部聯接ra_rcrt_codes。 rcrt_id = ra_rcrt_codes.rcrt_id和TCRT.active = 1和ra_rcrt_codes。rcrt_name不像'TAM%'和ra_rcrt_codes.active = 1和TCRT.asset_id In(:appId1)。我想這可能是我使用的ROUND函數的問題。由於正常的查詢工作正常。 – 2012-02-24 07:23:00
我找到了解決方法,爲此添加「爲只讀」我的查詢正在打破。但我不想應用這個機制作爲它的大問題來查找查詢並改正它們。有人可以提出任何其他解決方法嗎? – 2012-03-03 07:19:03