Spring boot Spring批处理:没有为JDBCBatchItemWriter的SQL参数错误提供值

Spring boot Spring批处理:没有为JDBCBatchItemWriter的SQL参数错误提供值,spring-boot,spring-batch,batch-processing,Spring Boot,Spring Batch,Batch Processing,我有一个Spring批处理应用程序,在该应用程序中,我尝试从DB读取记录并将其写入文件,然后更新从DB获取的行的列 我能够从数据库中读取记录,将其写入文件,但当我添加更新步骤时,应用程序失败,出现奇怪的错误 这是我的POJO课程: 公共班级学生{ 学生长; 字符串名; 字符串主题; 保留字符串标记; 串进程; 字符串lastUpdateUser; } 我的步骤如下: @Bean 公共步骤()引发异常{ 返回stepBuilderFactory.get(“Step”).chunk(100) .r

我有一个Spring批处理应用程序,在该应用程序中,我尝试从DB读取记录并将其写入文件,然后更新从DB获取的行的列

我能够从数据库中读取记录,将其写入文件,但当我添加更新步骤时,应用程序失败,出现奇怪的错误

这是我的POJO课程:

公共班级学生{
学生长;
字符串名;
字符串主题;
保留字符串标记;
串进程;
字符串lastUpdateUser;
}
我的步骤如下:

@Bean
公共步骤()引发异常{
返回stepBuilderFactory.get(“Step”).chunk(100)
.reader(jdbcPagingItemReader())
.处理器(studentTemprocessor)
.writer(compositeItemWriter())
.build();
}
以下是我的复合项目编写器:

@Bean
public CompositeItemWriter CompositeItemWriter()引发异常{
返回新的CompositeItemWriterBuilder()
.delegate(Arrays.asList(fileItemWriter(),studentUpdateItemWriter())
.build();
}
下面是我用来与 DatabaseItemWriter

@Bean
公共JdbcBatchItemWriter studentUpdateItemWriter(){
返回新的DatabaseItemWriter(数据源、jdbcTemplate);
}
这是我的JDBCBatchItemWriter,用于更新数据库上的记录,我收到一个错误:

@Bean
公共JdbcBatchItemWriter数据库ItemWriter(数据源数据源,名称参数jdbcTemplate jdbcTemplate){
JdbcBatchItemWriter itemWriter=新的JdbcBatchItemWriter();
itemWriter.setDataSource(this.dataSource);
itemWriter.setSql(
“UPDATE dbo.student_记录集subject='Science',last_updated_user='batchappn',其中student_Id=:studentId”);
itemWriter.SetAssertUpdate(错误);
setItemSqlParameterSourceProvider(新的ItemSqlParameterSourceProvider(){
@凌驾
公共SqlParameterSource createSqlParameterSource(学生项目){
返回新的MapSqlParameterSource().addValue(“studentId”,item.getStudentId());
}
});
itemWriter.AfterPropertieSet();
返回项目编写器;
}
现在,当我执行应用程序时,我得到了一个错误。以下是stacktrace:

org.springframework.dao.InvalidDataAccessApiUsageException:没有为SQL参数“5”提供值:bean类[com.student.record.model.student]的属性“48”无效:bean属性“5”不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配?
在org.springframework.jdbc.core.namedparam.NamedParameterUtils.buildValueArray(NamedParameterUtils.java:354)~[spring-jdbc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
在org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate$2.setValues(NamedParameterJdbcTemplate.java:371)~[spring-jdbc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
在org.springframework.jdbc.core.JdbcTemplate.lambda$batchUpdate$2(JdbcTemplate.java:944)~[spring-jdbc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:617)~[spring-jdbc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:647)~[spring-jdbc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
在org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:936)~[spring-jdbc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
在org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.batchUpdate(NamedParameterJdbcTemplate.java:366)~[spring-jdbc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
在org.springframework.batch.item.database.JdbcBatchItemWriter.write(JdbcBatchItemWriter.java:182)~[spring-batch-infrastructure-4.2.4.RELEASE.jar:4.2.4.RELEASE]
在org.springframework.batch.item.support.CompositeItemWriter.write(CompositeItemWriter.java:59)~[spring-batch-infrastructure-4.2.4.RELEASE.jar:4.2.4.RELEASE]
在org.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems(SimpleChunkProcessor.java:193)~[spring-batch-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
在org.springframework.batch.core.step.item.SimpleChunkProcessor.doWrite(SimpleChunkProcessor.java:159)~[spring-batch-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
在org.springframework.batch.core.step.item.SimpleChunkProcessor.write(SimpleChunkProcessor.java:294)~[spring-batch-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
在org.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:217)~[spring-batch-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
在org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:77)~[spring-batch-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
在org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:407)~[spring-batch-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
在org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:331)~[spring-batch-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
在org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)~[spring-tx-5.2.9.RELEASE.jar:5.2.9.RELEASE]
在org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:273)~[spring-batch-core-4.2.4.RELEASE.jar:4.2.4.RELEASE]
位于org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInitation(StepCon