From 421333dadc1e1da711290390f16b3499ca686427 Mon Sep 17 00:00:00 2001 From: Peter-Josef Meisch Date: Mon, 18 May 2020 18:05:30 +0200 Subject: [PATCH] DATAES-832 - findAllById repository method returns iterable with null elements for not found ids. --- .../support/AbstractElasticsearchRepository.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java index 550026431..b17053d28 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java @@ -154,10 +154,21 @@ public abstract class AbstractElasticsearchRepository implements Elastics @Override public Iterable findAllById(Iterable ids) { + Assert.notNull(ids, "ids can't be null."); + NativeSearchQuery query = new NativeSearchQueryBuilder().withIds(stringIdsRepresentation(ids)).build(); - return operations.multiGet(query, getEntityClass(), getIndexCoordinates()).stream().filter(Objects::nonNull) - .collect(Collectors.toList()); + List result = new ArrayList<>(); + List multiGetEntities = operations.multiGet(query, getEntityClass(), getIndexCoordinates()); + + multiGetEntities.forEach(entity -> { + + if (entity != null) { + result.add(entity); + } + }); + + return result; } @Override