2013-06-10 1 views
0

я столкнулся это сообщение об ошибке:

Ошибка создания боб с именем «jdbcWriter», инициализация боба не удалось, не удалось преобразовать значение свойства типа «$ 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?

ответ

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 обыкновение использовать их, так как, он принимает значение от объекта, полученного в записи (например, транзакции).

Я пытаюсь понять, почему вам нужно передать сумму и идентификатор в jobParameters? Можете ли вы объяснить, что вы пытаетесь достичь на более высоком уровне?

+0

Я не пытался передать параметры, я просто хотел, чтобы ItemWriter получал значения от транзакций, и я думал, что это правильный способ сделать это, потому что ресурсов недостаточно для изучения. – user1744446

+0

Итак, просто удалите scope = step в вашей конфигурации bean-файла WriterSqlParameterSetter, а также удалите определение свойств 2. это должно решить проблему – Cygnusx1

 Смежные вопросы

  • Нет связанных вопросов^_^