mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-22 03:52:10 +00:00
DATAES-832 - findAllById repository method returns iterable with null elements for not found ids.
This commit is contained in:
parent
e7110c14ab
commit
34e3dc735c
@ -22,6 +22,7 @@ import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -155,7 +156,8 @@ public abstract class AbstractElasticsearchRepository<T, ID> implements Elastics
|
||||
public Iterable<T> findAllById(Iterable<ID> ids) {
|
||||
Assert.notNull(ids, "ids can't be null.");
|
||||
NativeSearchQuery query = new NativeSearchQueryBuilder().withIds(stringIdsRepresentation(ids)).build();
|
||||
return operations.multiGet(query, getEntityClass(), getIndexCoordinates());
|
||||
return operations.multiGet(query, getEntityClass(), getIndexCoordinates()).stream().filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -25,12 +25,14 @@ import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.Long;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
@ -56,6 +58,7 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTes
|
||||
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
|
||||
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
|
||||
import org.springframework.data.elasticsearch.utils.IndexInitializer;
|
||||
import org.springframework.data.util.StreamUtils;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
|
||||
/**
|
||||
@ -361,6 +364,14 @@ public class SimpleElasticsearchRepositoryTests {
|
||||
@Test
|
||||
public void shouldDeleteAll() {
|
||||
|
||||
// given
|
||||
String documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity = new SampleEntity();
|
||||
sampleEntity.setId(documentId);
|
||||
sampleEntity.setMessage("hello world.");
|
||||
sampleEntity.setVersion(System.currentTimeMillis());
|
||||
repository.save(sampleEntity);
|
||||
|
||||
// when
|
||||
repository.deleteAll();
|
||||
|
||||
@ -677,6 +688,32 @@ public class SimpleElasticsearchRepositoryTests {
|
||||
assertThat(savedEntities).hasSize(0);
|
||||
}
|
||||
|
||||
@Test // DATAES-832
|
||||
void shouldNotReturnNullValuesInFindAllById() {
|
||||
|
||||
// given
|
||||
String documentId1 = "id-one";
|
||||
SampleEntity sampleEntity1 = new SampleEntity();
|
||||
sampleEntity1.setId(documentId1);
|
||||
repository.save(sampleEntity1);
|
||||
String documentId2 = "id-two";
|
||||
SampleEntity sampleEntity2 = new SampleEntity();
|
||||
sampleEntity2.setId(documentId2);
|
||||
repository.save(sampleEntity2);
|
||||
String documentId3 = "id-three";
|
||||
SampleEntity sampleEntity3 = new SampleEntity();
|
||||
sampleEntity3.setId(documentId3);
|
||||
repository.save(sampleEntity3);
|
||||
|
||||
Iterable<SampleEntity> allById = repository
|
||||
.findAllById(Arrays.asList("id-one", "does-not-exist", "id-two", "where-am-i", "id-three"));
|
||||
List<SampleEntity> results = StreamUtils.createStreamFromIterator(allById.iterator()).collect(Collectors.toList());
|
||||
|
||||
assertThat(results).hasSize(3);
|
||||
assertThat(results.stream().map(SampleEntity::getId).collect(Collectors.toList()))
|
||||
.containsExactlyInAnyOrder("id-one", "id-two", "id-three");
|
||||
}
|
||||
|
||||
private static List<SampleEntity> createSampleEntitiesWithMessage(String message, int numberOfEntities) {
|
||||
|
||||
List<SampleEntity> sampleEntities = new ArrayList<>();
|
||||
|
Loading…
x
Reference in New Issue
Block a user