1

私はSpring Batchコードで次のようなエラーに直面しています:クラスパスリソースで定義された名前「itemReader」を持つBeanの作成エラー、タイプ「$ Proxy0」のプロパティ値をプロパティ「preparedStatementSetter」に必要なタイプに変換できませんでした。

これは私の ItemReader コードです:

<beans:bean id="itemReader"
 class="org.springframework.batch.item.database.JdbcCursorItemReader">
    <beans:property name="dataSource" ref="dataSource"/>
    <beans:property name="sql" value="select * from Trans_Tst WHERE id =?"/>
    <beans:property name="rowMapper" ref="romMapper"/>
    <beans:property name="preparedStatementSetter" ref="ReaderSqlParameterSetter"/>
</beans:bean>



<beans:bean id="ReaderSqlParameterSetter"
 class="sa.com.anb.itg.dev.settlement.batch.ReaderSqlParameterSetter" scope="step">
<beans:property name="id" value="#{jobParameters[id]}"/>
</beans:bean>

これは私の ReaderSqlParameterSetter クラスです:

package sa.com.anb.itg.dev.settlement.batch;
import java.sql.PreparedStatement;
import org.springframework.batch.item.database.ItemPreparedStatementSetter;
import java.sql.SQLException;

public class ReaderSqlParameterSetter implements
 ItemPreparedStatementSetter<transactionas>{

    public void setValues(transactionas transactionas,PreparedStatement ps) 
          throws SQLException {
        ps.setInt(1, transactionas.GetID());

    } 

}

<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="preparedStatementSetter" 
          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 PreparedStatementSetter {

    transactionas transactionas = new transactionas();

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

    } 

}

誰でも私を助けてもらえますか?

4

1 に答える 1