0

私はこのエラーメッセージに直面しています:

「jdbcWriter」という名前の Bean の作成中にエラーが発生しました。Bean の初期化に失敗しました。タイプ「$Proxy0」のプロパティ値をプロパティ「itemPreparedStatementSetter」に必要なタイプに変換できませんでした。

これは私のコードです:

<beans:bean id="jdbcWriter" 
  class="org.springframework.batch.item.database.JdbcBatchItemWriter">
    <beans:property name="dataSource" ref="dataSource"/> 
    <beans:property name="sql" value="update Trans_Tst set (amount) values (?) 
           where id= ?"/>
    <beans:property name="itemPreparedStatementSetter" 
           ref="WriterSqlParameterSetter"/> 
</beans:bean> 
<beans:bean id="WriterSqlParameterSetter" 
  class="sa.com.anb.itg.dev.settlement.batch.WriterSqlParameterSetter" scope="step">
    <beans:property name="amount" value="#{jobParameters[amount]}"/>
    <beans:property name="id" value="#{jobParameters[id]}"/>  
</beans:bean>




public class WriterSqlParameterSetter implements 
  ItemPreparedStatementSetter<transactionas>{

public void setValues(transactionas ts, PreparedStatement ps) throws SQLException {
        ps.setDouble(1, ts.GetAmount());
        ps.setInt(2, ts.GetID());               
    }
}

誰でもこのエラーを解決するのを手伝ってもらえますか? このエラーは のプロパティの値と関係がありますWriterSqlParameterSetterか?

4

1 に答える 1

1

わかりました、最初にここに表示されます:

WriterSqlParameterSetter は ItemPreparedStatementSetter です! 大丈夫!

しかし、宣言したとしても:

 <beans:property name="amount" value="#{jobParameters[amount]}"/>
 <beans:property name="id" value="#{jobParameters[id]}"/>  

これらのプロパティが に表示されません:

public class WriterSqlParameterSetter implements 
  ItemPreparedStatementSetter<transactionas>{

public void setValues(transactionas ts, PreparedStatement ps) throws SQLException {
    ps.setDouble(1, ts.GetAmount());
    ps.setInt(2, ts.GetID());               
    }
}

また、プロパティが宣言されていても、ItemPreparedStatementSetter はそれらを使用しません。ライターで受け取ったオブジェクト (例: transactionas) から値を取得するためです。

jobParameters で金額と ID を渡す必要がある理由を確認しようとしていますか? より高いレベルで達成しようとしていることを説明できますか?

于 2013-06-10T14:42:54.210 に答える