我有一个奇怪的问题,使用spring-jdbc在oracle中使用rowid更新行 问题是一切都好,但对于某些rowid,更新永远不会完成 申请被冻结。 我将Spring日志级别更改为DEBUG以查看发生了什么,但没有什么是奇怪的,并且spring log与更新成功完全一样。
我尝试在plsql中执行相同的sql,并且更新已成功执行。
spring版本是3.1.1.RELEASE oracle版本是11.1.0.6.0
dao中更新方法的主体是: String sql =
“UPDATE”+ schema +“。MSG m SET m.STATE =”+ state +“WHERE ROWID ='”+ msg.getRowId()+“'”;
getJdbcTemplate()更新(SQL);
dao bean:
<bean id="messageDao" class="com.foo.dao.springjdbc.MessageDaoSpringJdbcImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
的JdbcTemplate:
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean>
数据来源:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@${db.ip}:${db.port}:${db.sid}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<property name="validationQuery" value="select 1 from dual"/>
<property name="testOnBorrow" value="true"/>
<property name="testWhileIdle" value="true"/>
<property name="timeBetweenEvictionRunsMillis" value="5000"/>
<property name="numTestsPerEvictionRun" value="3"/>
<property name="maxActive" value="1"/>
<property name="maxIdle" value="3"/>
</bean>
任何想法?