2016-08-31 24 views
-2

am春のバッチに新しい。私はこのエラーが発生している春のバッチジョブと私はポストグラムのDBにデータを挿入しています。これを修正する方法は?メソッドorg.postgresql.jdbc3.Jdbc3PreparedStatement.setQueryTimeout(int)はまだ実装されていません。

メソッド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> 
+0

私は混乱しています - あなたのプールにOracle JDBCドライバクラスを持っていると、PostgreSQLメソッドが見つからないというエラーがなぜ発生しますか? – duffymo

+0

ドライバの値はorg.postgresql.Driverですpostgres sqlを使用しています – user3715296

答えて

1

データソースがOKに見える.... @duffymo、Oracleドライバはデフォルトですが、「db.driver」が指定された場合は、「db.driver」プロパティの値によって上書きされます。

setTimeoutエラーは、実際にはsetTimeoutを実装していないため、PostgreSQLドライバの一部のバージョンによってスローされます。

どのバージョンのPostreSQLドライバを使用していますか? Spring Batchの仕事の詳細を分かち合えますか? SpringがPreparedStatementでタイムアウトを設定するのを防ぐ方法がわかりません。推測すると、db.con.unreturnedTimeoutを0に設定できます。私は値がsetTimeoutに渡されるかもしれないと思っています。確信はないけど。

+0

最新バージョンの9.4-1200-jdbc41を含む別のバージョンを試しました。しかし、同じエラーが発生しています。スプリングバッチバージョン3.0.4.RELEASE。 コードps.setQueryTimeout(0)を追加しようとしました。しかし、エラーは同じです – user3715296

+0

Springバッチ設定とバッチジョブの詳細を共有できますか? Spring Batchのデータベース・リーダーは、デフォルトでqueryTimeoutを-1に設定しており、この値-1はpreparedStatements内でqueryTimeoutをまったく呼び出さないようにします。設定やソースコードのどこにでも 'queryTimeout'や 'query-timeout'のインスタンスがありますか? –

+0

エラーを解決することができます問題は親にあります。別のバージョンのドライバを使用しています。 UR suggitionsありがとう – user3715296

関連する問題