Я обработал объект-оболочку (в данном случае AimResponse).
В зависимости от свойства «тип» я сопоставляю объект Document или SourceSpace.
Затем мне нужно сохранить эти сущности. Я нашел пример, похожий на этот:
@Override
public void write(List<? extends List<AimResponse>> list)
throws Exception {
List<SourceSpace> sourceSpaces = new ArrayList<>();
List<Document> documents = new ArrayList<>();
for(List<AimResponse> item:list) {
for(AimResponse i:item) {
if(i.getType().indexOf("folder") >= 0) {
SourceSpace sourceSpace = Mapper.aimResponseToSourceSpace(i);
sourceSpace.setStatus(Status.FOUND.name());
sourceSpaces.add(sourceSpace);
} else if(i.getType().indexOf("document") >= 0) {
Document document = Mapper.aimResponseToDocument(i);
document.setStatus(Status.FOUND.name());
documents.add(document);
}
}
}
if(!CollectionUtils.isEmpty(sourceSpaces)) {
sourceSpaceWriter.write(sourceSpaces);
}
if(!CollectionUtils.isEmpty(documents)) {
documentWriter.write(documents);
}
}
В этом примере я не могу создать экземпляр JdbcBatchItemWriter, но в любом случае, я думаю, было бы лучше, если бы процессор мог разделиться на 2 разных списка и вызвать 2 разных писателя у каждого свой тип, но я думаю, это невозможно.
Любая помощь приветствуется.