mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-22 12:02: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.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -155,7 +156,8 @@ public abstract class AbstractElasticsearchRepository<T, ID> implements Elastics
|
|||||||
public Iterable<T> findAllById(Iterable<ID> ids) {
|
public Iterable<T> findAllById(Iterable<ID> ids) {
|
||||||
Assert.notNull(ids, "ids can't be null.");
|
Assert.notNull(ids, "ids can't be null.");
|
||||||
NativeSearchQuery query = new NativeSearchQueryBuilder().withIds(stringIdsRepresentation(ids)).build();
|
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
|
@Override
|
||||||
|
@ -25,12 +25,14 @@ import lombok.Builder;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.lang.Long;
|
import java.lang.Long;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
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.ElasticsearchRepository;
|
||||||
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
|
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
|
||||||
import org.springframework.data.elasticsearch.utils.IndexInitializer;
|
import org.springframework.data.elasticsearch.utils.IndexInitializer;
|
||||||
|
import org.springframework.data.util.StreamUtils;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -361,6 +364,14 @@ public class SimpleElasticsearchRepositoryTests {
|
|||||||
@Test
|
@Test
|
||||||
public void shouldDeleteAll() {
|
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
|
// when
|
||||||
repository.deleteAll();
|
repository.deleteAll();
|
||||||
|
|
||||||
@ -677,6 +688,32 @@ public class SimpleElasticsearchRepositoryTests {
|
|||||||
assertThat(savedEntities).hasSize(0);
|
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) {
|
private static List<SampleEntity> createSampleEntitiesWithMessage(String message, int numberOfEntities) {
|
||||||
|
|
||||||
List<SampleEntity> sampleEntities = new ArrayList<>();
|
List<SampleEntity> sampleEntities = new ArrayList<>();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user