使用spring-jdbc在oracle中通过rowid更新行

时间:2012-10-03 10:08:14

标签: oracle spring-jdbc

我有一个奇怪的问题,使用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>

任何想法?

0 个答案:

没有答案