【问题标题】:Spring batch datareader returns extra null object on end of collection of read items?Spring批处理数据读取器在读取项目集合结束时返回额外的空对象?
【发布时间】:2025-12-04 12:10:01
【问题描述】:

我正在使用 Spring 批处理 - 使用数据读取器加载项目列表。对于我的每个读者,他们都在列表末尾返回一个额外的空对象。

以前有人见过吗?我做错了什么?

【问题讨论】:

  • 您需要提供更多信息。如:数据源是什么?提供一些代码可能会获得更大的吸引力,即使您必须将其简化以获得说明您的问题的示例。您可能会发现,仅仅修补隔离问题就可以帮助您解决问题。

标签: java datareader spring-batch


【解决方案1】:

这是正常行为。

阅读器停在一个空元素上。 但是要找到一个空元素,你必须找到它。 结果,发出了 null 元素,但它将是最后一个,并且不会调用 writer。

【讨论】:

    【解决方案2】:

    听起来您正在从ItemReader 实现read() 方法 http://static.springsource.org/spring-batch/apidocs/org/springframework/batch/item/ItemReader.html

    您想要做的是从JdbcCursorItemTeader 实现readCursor(ResultSet rs, int currentRow) 方法 - 这将停止这种行为。 http://static.springsource.org/spring-batch/apidocs/org/springframework/batch/item/database/JdbcCursorItemReader.html

    【讨论】: