Spring batch Spring批处理-Ibatis批处理项目编写器-空指针异常

Spring batch Spring批处理-Ibatis批处理项目编写器-空指针异常,spring-batch,ibatis,Spring Batch,Ibatis,我试图将一个数据从一个数据源复制到另一个数据源,这是iBatchItemWriter类用来实现的。记录已插入目标数据库,但批处理结束时出现空指针异常,如下所示 java.lang.NullPointerException 位于org.springframework.batch.item.database.IbatisBatchItemWriter.write(IbatisBatchItemWriter.java:142) 位于org.springframework.batch.core.step

我试图将一个数据从一个数据源复制到另一个数据源,这是iBatchItemWriter类用来实现的。记录已插入目标数据库,但批处理结束时出现空指针异常,如下所示

java.lang.NullPointerException 位于org.springframework.batch.item.database.IbatisBatchItemWriter.write(IbatisBatchItemWriter.java:142) 位于org.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems(SimpleChunkProcessor.java:175) 位于org.springframework.batch.core.step.item.SimpleChunkProcessor.doWrite(SimpleChunkProcessor.java:151) 位于org.springframework.batch.core.step.item.SimpleChunkProcessor.write(SimpleChunkProcessor.java:274) 位于org.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:199) 位于org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:75)

但是在添加属性assertupdates=fales之后,我没有得到错误,然后数据也被复制了。但我不相信空指针错误,看起来我的配置中缺少了一些东西

我使用spring infra 2.2.4和ibatis 2.3.0版

<bean id="targetWriterDepAcct03"
        class="org.springframework.batch.item.database.IbatisBatchItemWriter">
        <property name="sqlMapClient" ref="targetDatabaseMap" />
        <property name="statementId" value="DepositAccountSqlMap.updtDepositAccount" />
        <property name="assertUpdates" value="false" />
    </bean>

<batch:job id="baseJob" abstract="true" restartable="true"
        job-repository="jobRepository" />
    <batch:job id="TboltSyncBatchJob">
        <batch:step id="CheckForConfigFileStep">
            <batch:tasklet ref="CheckForConfigFile" />
            <batch:next on="COMPLETED" to="SyncDataDepAcct03" />
            <batch:end on="FAILED" />
        </batch:step>

        <batch:step id="SyncDataDepAcct03">
            <batch:tasklet transaction-manager="transactionManager">
                <batch:chunk reader="sourceReaderForDepAcct03" writer="targetWriterDepAcct03"
                    commit-interval="1000" />
            </batch:tasklet>
        </batch:step>       


有什么想法吗?

认为NPE是由于SqlMapClient返回的结果为零。如果不需要检查记录数,可以将其关闭。如果您需要检查它们,您将需要了解为什么该查询没有返回任何结果。您可以在此处看到iBattisBatchItemWriter的代码: