方法org.postgresql.jdbc3.Jdbc3PreparedStatement.setQueryTimeout(int)尚未实现。

时间:2016-08-31 11:54:50

标签: java spring spring-batch

是春季批次的新手。使用spring批处理作业我在postgres db中插入数据然后我收到此错误。如何解决这个问题?

方法org.postgresql.jdbc3.Jdbc3PreparedStatement.setQueryTimeout(int)尚未实现。嵌套异常是java.sql.SQLException:方法org.postgresql.jdbc3.Jdbc3PreparedStatement.setQueryTimeout(int)尚未实现。'

这是我的数据源代码。

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <!-- DB connection properties -->
    <property name="driverClass" value="${db.driver:oracle.jdbc.OracleDriver}" />
    <property name="jdbcUrl" value="${db.url}" />
    <property name="user" value="${db.user:}" />
    <property name="password" value="${db.password:}" />

    <!-- Pool sizing properties -->
    <property name="initialPoolSize" value="${db.pool.initialSize:5}" />
    <property name="maxPoolSize" value="${db.pool.maxSize:25}" />
    <property name="minPoolSize" value="${db.pool.minSize:0}" />
    <property name="maxStatements" value="${db.pool.maxStatements:10}" />

    <!-- Connection testing and acquisition properties -->
    <property name="maxIdleTime" value="${db.con.maxIdleTime:300}" />
    <property name="idleConnectionTestPeriod" value="${db.con.testPeriod:30}" />
    <property name="preferredTestQuery" value="${db.con.testQuery:select 1 from dual}" />
    <property name="acquireIncrement" value="${db.con.acquireIncrement:5}" />
    <property name="acquireRetryAttempts" value="${db.con.retryAttempts:0}" />
    <property name="acquireRetryDelay" value="${db.con.retryDelay:3000}" />

    <!-- JMX name -->
    <property name="dataSourceName" value="Datasource" />

    <!-- Debugging options -->
    <property name="unreturnedConnectionTimeout" value="${db.con.unreturnedTimeout:0}" />
    <property name="debugUnreturnedConnectionStackTraces" value="${db.con.debugUnreturned:false}" />
</bean>

1 个答案:

答案 0 :(得分:1)

数据源看起来没问题.... @ duffymo,Oracle驱动程序是默认的,但是如果指定了'db.driver',它将被'db.driver'属性的值覆盖。

某些版本的PostgreSQL驱动程序抛出了setTimeout错误,因为它们实际上没有实现setTimeout,所以他们不希望用户认为setTimeout实际上有任何影响。

您使用的是什么版本的PostreSQL驱动程序?你能分享一下Spring Batch工作的一些细节吗?我不确定如何阻止Spring在PreparedStatement上设置超时。猜测一下,你可以将db.con.unreturnedTimeout设置为0;我认为值可以传递给setTimeout;但我不确定。