我们使用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