Hádám, že pravděpodobně aktualizujete kolekci, ze které čtete, a také aktualizujete pole, které dotaz používá. Pokud ano, měl jsem nedávno stejný problém.
MongoItemReader je stránkovaná čtečka. Pokaždé, když zapisovatel tyto záznamy aktualizuje, má čtenář menší fond, ale stránka se stále zvětšuje.
Představte si tedy, že máme 20 položek a čteme 5 položek najednou:
1) Čte položky 1–5 z celkového počtu 20.
2) Aktualizuje položky 1-5 a nyní je k dispozici celkem 15 možných položek
3) Čte položky 6-10 z celkového počtu 15.
4) Aktualizuje položky 6-10 a nyní je celkem 10 možných položek.
5) Čte položky 11-15 z 10 možných položek
6) Čtení vrátí hodnotu null, protože pro danou stránku není nic vráceno.
Nyní jste tedy zpracovali jen polovinu.
Postupoval jsem podle níže uvedeného návodu a vytvořil jsem MongoDbCursorItemReader, který mi tento problém vyřešil:https://blog.zenika.com/2012/05/23/spring-batch-and-mongodb-cursor-based-item-reader/