Как обработать список объектов с помощью Spring batch - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь прочитать файл JSON, прочитать его значения и сохранить его в объекте List<Data>. Я вызываю список из моего класса ItemReader и обрабатываю его для записи в базу данных.

Мой читатель выглядит следующим образом:

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;
        }

    }

, а мой процессор - обычный процессор, который принимает <Data,ULProspector> как ввод и вывод.

Когда я пытаюсь записать его в базу данных. Только одна запись, которую я могу записать в БД, и после этого она получает выход.

1 Ответ

0 голосов
/ 01 апреля 2020

И я считаю, что только одна запись, которую вы можете записать в БД, является последней записью из JSON файла.

Попробуйте изменить эту часть кода

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

ДО

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

...