【问题标题】:How to process a List of Objects Using Spring batch如何使用 Spring 批处理处理对象列表
【发布时间】:2020-07-13 03:13:56
【问题描述】:

我正在尝试读取 JSON 文件并读取其值并将其存储在 List<Data> 对象中。 我正在从我的 ItemReader 类中调用 List 并对其进行处理以将其写入数据库。

我的阅读器如下所示:

public class JsonItemReaderFromULProspector implements ItemReader<Data>{
//  static String jsonFilePath = Directory.JSON_FILE_PATH;

    private int nextULPIndex;

    public JsonItemReaderFromULProspector() {
         initialize();
}

    private List<Data> finalULPData;
    private void initialize() {
        List<Data> ulpData=ReadJSONFromULP.getJsonObject();
        for(Data data:ulpData){
            finalULPData=Collections.unmodifiableList(Arrays.asList(data));
            nextULPIndex=0;
        }
    }

    @Override
    public Data read()throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {

        Data nextULPData=null;
         if (nextULPIndex < finalULPData.size()) {
             nextULPData = finalULPData.get(nextULPIndex);

             nextULPIndex++;
            }

            return nextULPData;
        }

    }

而我的处理器是一个普通的处理器,它以&lt;Data,ULProspector&gt; 作为输入和输出。

当我尝试将其写入数据库时​​。我只能将一条记录写入数据库,然后它就会退出。

【问题讨论】:

  • 在这种情况下,您的阅读器只返回一个元素。检查您的 read 方法并确保它在返回 null 之前返回多个元素。

标签: spring spring-boot maven model-view-controller spring-batch


【解决方案1】:

而且我相信只有一条您能够将其写入数据库的记录是 JSON 文件中的最后一条记录。

尝试更改这部分代码

for(Data data:ulpData){
            finalULPData=Collections.unmodifiableList(Arrays.asList(data));
            nextULPIndex=0;
        }

finalULPData=Collections.unmodifiableList(ulpData);
nextULPIndex=0;        

【讨论】:

  • 出现错误类型不匹配:无法从 List> 转换为 List
  • 是的,你是对的,它是 JSON 中保存在数据库中的最后一条记录。我想保存从第一个开始的所有记录
  • 嗨 Hemant.. 在用建议的代码替换我的代码后,我得到了从 ItemReader 到 Item Processor 的所有记录,但在处理器中出现错误,如下所示 java.lang.NullPointerException: null at com.dksh。 spcrt.processor.ULProspectorDataProcessor.process(ULProspectorDataProcessor.java) ~[classes/:na] at com.dksh.spcrt.processor.ULProspectorDataProcessor.process(ULProspectorDataProcessor.java) ~[classes/:na] at org.springframework.batch。 core.step.item.SimpleChunkProcessor.doProcess(SimpleChunkProcessor.java:134)
  • 建议对 ULProspectorDataProcessor.java 中的 NullPointerException 异常进行调试,或者您可以使用处理器类的代码编辑您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 2019-01-30
  • 2014-12-03
  • 1970-01-01
相关资源
最近更新 更多