findAllById returns all requested documents.

Original Pull Request #2421
Closes #2417

(cherry picked from commit 28489ffee8f405d8f5d2000bb40161d61b21485d)
(cherry picked from commit 6551a80ccc503b20c09eae2ebc3ac33dafcb3c34)
This commit is contained in:
Peter-Josef Meisch 2023-01-04 17:13:22 +01:00
parent b896694d3a
commit 87540bcabc
No known key found for this signature in database
GPG Key ID: DE108246970C7708
2 changed files with 113 additions and 117 deletions

View File

@ -202,29 +202,27 @@ abstract class ElasticsearchRepositoryIntegrationTests {
assertThat(entityFromElasticSearch).isNotPresent();
}
@Test // DATAES-82
@Test // DATAES-82, #2417
void shouldFindAllByIdQuery() {
// given
// create more than 10 documents to see that the number of input ids is set as requested size
int numEntities = 20;
List<String> ids = new ArrayList<>(numEntities);
List<SampleEntity> entities = new ArrayList<>(numEntities);
for (int i = 0; i < numEntities; i++) {
String documentId = nextIdAsString();
ids.add(documentId);
SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId);
sampleEntity.setMessage("hello world.");
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity);
entities.add(sampleEntity);
}
repository.saveAll(entities);
String documentId2 = nextIdAsString();
SampleEntity sampleEntity2 = new SampleEntity();
sampleEntity2.setId(documentId2);
sampleEntity2.setMessage("hello world.");
sampleEntity2.setVersion(System.currentTimeMillis());
repository.save(sampleEntity2);
Iterable<SampleEntity> sampleEntities = repository.findAllById(ids);
// when
Iterable<SampleEntity> sampleEntities = repository.findAllById(Arrays.asList(documentId, documentId2));
// then
assertThat(sampleEntities).isNotNull().hasSize(2);
assertThat(sampleEntities).isNotNull().hasSize(numEntities);
}
@Test

View File

@ -17,11 +17,13 @@ package org.springframework.data.elasticsearch.repository.support;
import static org.assertj.core.api.Assertions.*;
import static org.springframework.data.elasticsearch.core.query.Query.*;
import static org.springframework.data.elasticsearch.utils.IdGenerator.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@ -63,13 +65,10 @@ import org.springframework.lang.Nullable;
@SpringIntegrationTest
abstract class SimpleReactiveElasticsearchRepositoryIntegrationTests {
@Autowired
ReactiveElasticsearchOperations operations;
@Autowired
ReactiveSampleEntityRepository repository;
@Autowired ReactiveElasticsearchOperations operations;
@Autowired ReactiveSampleEntityRepository repository;
@Autowired
private IndexNameProvider indexNameProvider;
@Autowired private IndexNameProvider indexNameProvider;
@BeforeEach
void before() {
@ -172,19 +171,27 @@ abstract class SimpleReactiveElasticsearchRepositoryIntegrationTests {
repository.findAllById(Arrays.asList("id-two", "id-two")).as(StepVerifier::create).verifyComplete();
}
@Test
// DATAES-519
@Test // DATAES-519, #2417
void findAllByIdShouldRetrieveMatchingDocuments() {
bulkIndex(new SampleEntity("id-one"), //
new SampleEntity("id-two"), //
new SampleEntity("id-three")) //
.block();
// create more than 10 documents to see that the number of input ids is set as requested size
int numEntities = 20;
List<String> ids = new ArrayList<>(numEntities);
List<SampleEntity> entities = new ArrayList<>(numEntities);
for (int i = 0; i < numEntities; i++) {
String documentId = nextIdAsString();
ids.add(documentId);
SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId);
sampleEntity.setMessage("hello world.");
sampleEntity.setVersion(System.currentTimeMillis());
entities.add(sampleEntity);
}
repository.saveAll(entities).blockLast();
repository.findAllById(Arrays.asList("id-one", "id-two")) //
repository.findAllById(ids) //
.as(StepVerifier::create)//
.expectNextMatches(entity -> entity.getId().equals("id-one") || entity.getId().equals("id-two")) //
.expectNextMatches(entity -> entity.getId().equals("id-one") || entity.getId().equals("id-two")) //
.expectNextCount(numEntities) //
.verifyComplete();
}
@ -422,8 +429,7 @@ abstract class SimpleReactiveElasticsearchRepositoryIntegrationTests {
bulkIndex(new SampleEntity("id-one"), toBeDeleted) //
.block();
repository.deleteAllById(Collections.singletonList(toBeDeleted.getId())).as(StepVerifier::create)
.verifyComplete();
repository.deleteAllById(Collections.singletonList(toBeDeleted.getId())).as(StepVerifier::create).verifyComplete();
assertThat(documentWithIdExistsInIndex(toBeDeleted.getId()).block()).isFalse();
}
@ -670,8 +676,7 @@ abstract class SimpleReactiveElasticsearchRepositoryIntegrationTests {
new SampleEntity("id-five", "message5", 5)) //
.block();
repository.findAllViaAnnotatedQueryByMessageInAndRatesIn(Arrays.asList("message5", "message3"), Arrays.asList(2,
3)) //
repository.findAllViaAnnotatedQueryByMessageInAndRatesIn(Arrays.asList("message5", "message3"), Arrays.asList(2, 3)) //
.as(StepVerifier::create) //
.consumeNextWith(it -> assertThat(it.getId()).isEqualTo("id-three")) //
.verifyComplete();
@ -732,24 +737,17 @@ abstract class SimpleReactiveElasticsearchRepositoryIntegrationTests {
@Document(indexName = "#{@indexNameProvider.indexName()}")
static class SampleEntity {
@Nullable
@Id
private String id;
@Id private String id;
@Nullable
@Field(type = FieldType.Text, store = true, fielddata = true)
private String type;
@Field(type = FieldType.Text, store = true, fielddata = true) private String type;
@Nullable
@Field(type = FieldType.Text, store = true, fielddata = true)
private String message;
@Field(type = FieldType.Text, store = true, fielddata = true) private String message;
@Nullable private int rate;
@Nullable private boolean available;
@Nullable
private int rate;
@Nullable
private boolean available;
@Nullable
@Version
private Long version;
@Version private Long version;
public SampleEntity() {
}
public SampleEntity() {}
public SampleEntity(@Nullable String id) {
this.id = id;