Added method support for Repository and Template to return List<T> (https://github.com/BioMedCentralLtd/spring-data-elasticsearch/issues/22)
This commit is contained in:
@@ -614,6 +614,111 @@ public class ElasticsearchTemplateTest {
|
||||
assertThat(sampleEntities.size(), is(equalTo(2)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldReturnListForGivenCriteria(){
|
||||
//given
|
||||
List<IndexQuery> indexQueries = new ArrayList<IndexQuery>();
|
||||
//first document
|
||||
String documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity1 = new SampleEntity();
|
||||
sampleEntity1.setId(documentId);
|
||||
sampleEntity1.setMessage("test message");
|
||||
sampleEntity1.setVersion(System.currentTimeMillis());
|
||||
|
||||
IndexQuery indexQuery1 = new IndexQuery();
|
||||
indexQuery1.setId(documentId);
|
||||
indexQuery1.setObject(sampleEntity1);
|
||||
indexQueries.add(indexQuery1);
|
||||
|
||||
//second document
|
||||
String documentId2 = randomNumeric(5);
|
||||
SampleEntity sampleEntity2 = new SampleEntity();
|
||||
sampleEntity2.setId(documentId2);
|
||||
sampleEntity2.setMessage("test test");
|
||||
sampleEntity2.setVersion(System.currentTimeMillis());
|
||||
|
||||
IndexQuery indexQuery2 = new IndexQuery();
|
||||
indexQuery2.setId(documentId2);
|
||||
indexQuery2.setObject(sampleEntity2);
|
||||
|
||||
indexQueries.add(indexQuery2);
|
||||
|
||||
//second document
|
||||
String documentId3 = randomNumeric(5);
|
||||
SampleEntity sampleEntity3 = new SampleEntity();
|
||||
sampleEntity3.setId(documentId3);
|
||||
sampleEntity3.setMessage("some message");
|
||||
sampleEntity3.setVersion(System.currentTimeMillis());
|
||||
|
||||
IndexQuery indexQuery3 = new IndexQuery();
|
||||
indexQuery3.setId(documentId3);
|
||||
indexQuery3.setObject(sampleEntity3);
|
||||
|
||||
indexQueries.add(indexQuery3);
|
||||
//when
|
||||
elasticsearchTemplate.bulkIndex(indexQueries);
|
||||
elasticsearchTemplate.refresh(SampleEntity.class,true);
|
||||
//when
|
||||
CriteriaQuery singleCriteriaQuery = new CriteriaQuery(new Criteria("message").contains("test"));
|
||||
CriteriaQuery multipleCriteriaQuery = new CriteriaQuery(new Criteria("message").contains("some").and("message").contains("message"));
|
||||
List<SampleEntity> sampleEntitiesForSingleCriteria = elasticsearchTemplate.queryForList(singleCriteriaQuery,SampleEntity.class);
|
||||
List<SampleEntity> sampleEntitiesForAndCriteria = elasticsearchTemplate.queryForList(multipleCriteriaQuery,SampleEntity.class);
|
||||
//then
|
||||
assertThat(sampleEntitiesForSingleCriteria.size(),is(2));
|
||||
assertThat(sampleEntitiesForAndCriteria.size(),is(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldReturnListForGivenStringQuery(){
|
||||
//given
|
||||
List<IndexQuery> indexQueries = new ArrayList<IndexQuery>();
|
||||
//first document
|
||||
String documentId = randomNumeric(5);
|
||||
SampleEntity sampleEntity1 = new SampleEntity();
|
||||
sampleEntity1.setId(documentId);
|
||||
sampleEntity1.setMessage("test message");
|
||||
sampleEntity1.setVersion(System.currentTimeMillis());
|
||||
|
||||
IndexQuery indexQuery1 = new IndexQuery();
|
||||
indexQuery1.setId(documentId);
|
||||
indexQuery1.setObject(sampleEntity1);
|
||||
indexQueries.add(indexQuery1);
|
||||
|
||||
//second document
|
||||
String documentId2 = randomNumeric(5);
|
||||
SampleEntity sampleEntity2 = new SampleEntity();
|
||||
sampleEntity2.setId(documentId2);
|
||||
sampleEntity2.setMessage("test test");
|
||||
sampleEntity2.setVersion(System.currentTimeMillis());
|
||||
|
||||
IndexQuery indexQuery2 = new IndexQuery();
|
||||
indexQuery2.setId(documentId2);
|
||||
indexQuery2.setObject(sampleEntity2);
|
||||
|
||||
indexQueries.add(indexQuery2);
|
||||
|
||||
//second document
|
||||
String documentId3 = randomNumeric(5);
|
||||
SampleEntity sampleEntity3 = new SampleEntity();
|
||||
sampleEntity3.setId(documentId3);
|
||||
sampleEntity3.setMessage("some message");
|
||||
sampleEntity3.setVersion(System.currentTimeMillis());
|
||||
|
||||
IndexQuery indexQuery3 = new IndexQuery();
|
||||
indexQuery3.setId(documentId3);
|
||||
indexQuery3.setObject(sampleEntity3);
|
||||
|
||||
indexQueries.add(indexQuery3);
|
||||
//when
|
||||
elasticsearchTemplate.bulkIndex(indexQueries);
|
||||
elasticsearchTemplate.refresh(SampleEntity.class,true);
|
||||
//when
|
||||
StringQuery stringQuery = new StringQuery(matchAllQuery().toString());
|
||||
List<SampleEntity> sampleEntities = elasticsearchTemplate.queryForList(stringQuery,SampleEntity.class);
|
||||
//then
|
||||
assertThat(sampleEntities.size(),is(3));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldPutMappingForGivenEntity()throws Exception{
|
||||
//given
|
||||
|
||||
@@ -463,4 +463,39 @@ public class CustomMethodRepositoryTest {
|
||||
assertThat(pageResult.getContent().get(0).getMessage(),is(sampleEntity3.getMessage()));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void shouldReturnListForMessage(){
|
||||
//given
|
||||
String documentId = random(5);
|
||||
SampleEntity sampleEntity = new SampleEntity();
|
||||
sampleEntity.setId(documentId);
|
||||
sampleEntity.setMessage("abc");
|
||||
sampleEntity.setVersion(System.currentTimeMillis());
|
||||
repository.save(sampleEntity);
|
||||
|
||||
String documentId2 = randomNumeric(5);
|
||||
SampleEntity sampleEntity2 = new SampleEntity();
|
||||
sampleEntity2.setId(documentId2);
|
||||
sampleEntity2.setMessage("abd");
|
||||
sampleEntity.setVersion(System.currentTimeMillis());
|
||||
repository.save(sampleEntity2);
|
||||
|
||||
String documentId3 = randomNumeric(5);
|
||||
SampleEntity sampleEntity3 = new SampleEntity();
|
||||
sampleEntity3.setId(documentId3);
|
||||
sampleEntity3.setMessage("abe");
|
||||
sampleEntity.setVersion(System.currentTimeMillis());
|
||||
repository.save(sampleEntity3);
|
||||
//when
|
||||
List<SampleEntity> sampleEntities = repository.findByMessage("abc");
|
||||
//then
|
||||
assertThat(sampleEntities.isEmpty(),is(false));
|
||||
assertThat(sampleEntities.size(),is(1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -36,6 +36,9 @@ public interface SampleCustomMethodRepository extends ElasticsearchRepository<Sa
|
||||
@Query("{\"bool\" : {\"must\" : {\"field\" : {\"message\" : \"?0\"}}}}")
|
||||
Page<SampleEntity> findByMessage(String message, Pageable pageable);
|
||||
|
||||
@Query("{\"bool\" : {\"must\" : {\"field\" : {\"message\" : \"?0\"}}}}")
|
||||
List<SampleEntity> findByMessage(String message);
|
||||
|
||||
Page<SampleEntity> findByAvailable(boolean available, Pageable pageable);
|
||||
|
||||
Page<SampleEntity> findByRateLessThan(int rate, Pageable pageable);
|
||||
|
||||
@@ -18,6 +18,8 @@ package org.springframework.data.elasticsearch.repositories;
|
||||
import org.springframework.data.elasticsearch.Book;
|
||||
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Rizwan Idrees
|
||||
* @author Mohsin Husen
|
||||
|
||||
Reference in New Issue
Block a user