mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-23 12:32:10 +00:00
DATAES-969 - Use ResultProcessor in ElasticsearchPartQuery to build PartTree.
This commit is contained in:
parent
8a20df24d2
commit
08ec8a5dd2
@ -47,7 +47,7 @@ public class ElasticsearchPartQuery extends AbstractElasticsearchRepositoryQuery
|
|||||||
|
|
||||||
public ElasticsearchPartQuery(ElasticsearchQueryMethod method, ElasticsearchOperations elasticsearchOperations) {
|
public ElasticsearchPartQuery(ElasticsearchQueryMethod method, ElasticsearchOperations elasticsearchOperations) {
|
||||||
super(method, elasticsearchOperations);
|
super(method, elasticsearchOperations);
|
||||||
this.tree = new PartTree(method.getName(), method.getEntityInformation().getJavaType());
|
this.tree = new PartTree(method.getName(), method.getResultProcessor().getReturnedType().getDomainType());
|
||||||
this.mappingContext = elasticsearchOperations.getElasticsearchConverter().getMappingContext();
|
this.mappingContext = elasticsearchOperations.getElasticsearchConverter().getMappingContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,15 +58,17 @@ public class ElasticsearchPartQuery extends AbstractElasticsearchRepositoryQuery
|
|||||||
CriteriaQuery query = createQuery(accessor);
|
CriteriaQuery query = createQuery(accessor);
|
||||||
Assert.notNull(query, "unsupported query");
|
Assert.notNull(query, "unsupported query");
|
||||||
|
|
||||||
|
Class<?> clazz = queryMethod.getResultProcessor().getReturnedType().getDomainType();
|
||||||
|
|
||||||
if (tree.isDelete()) {
|
if (tree.isDelete()) {
|
||||||
Object result = countOrGetDocumentsForDelete(query, accessor);
|
Object result = countOrGetDocumentsForDelete(query, accessor);
|
||||||
elasticsearchOperations.delete(query, queryMethod.getEntityInformation().getJavaType());
|
elasticsearchOperations.delete(query, clazz);
|
||||||
return result;
|
return result;
|
||||||
} else if (queryMethod.isPageQuery()) {
|
} else if (queryMethod.isPageQuery()) {
|
||||||
query.setPageable(accessor.getPageable());
|
query.setPageable(accessor.getPageable());
|
||||||
return elasticsearchOperations.queryForPage(query, queryMethod.getEntityInformation().getJavaType());
|
return elasticsearchOperations.queryForPage(query, clazz);
|
||||||
} else if (queryMethod.isStreamQuery()) {
|
} else if (queryMethod.isStreamQuery()) {
|
||||||
Class<?> entityType = queryMethod.getEntityInformation().getJavaType();
|
Class<?> entityType = clazz;
|
||||||
if (accessor.getPageable().isUnpaged()) {
|
if (accessor.getPageable().isUnpaged()) {
|
||||||
query.setPageable(PageRequest.of(0, DEFAULT_STREAM_BATCH_SIZE));
|
query.setPageable(PageRequest.of(0, DEFAULT_STREAM_BATCH_SIZE));
|
||||||
} else {
|
} else {
|
||||||
@ -78,18 +80,18 @@ public class ElasticsearchPartQuery extends AbstractElasticsearchRepositoryQuery
|
|||||||
|
|
||||||
if (accessor.getPageable().isUnpaged()) {
|
if (accessor.getPageable().isUnpaged()) {
|
||||||
|
|
||||||
int itemCount = (int) elasticsearchOperations.count(query, queryMethod.getEntityInformation().getJavaType());
|
int itemCount = (int) elasticsearchOperations.count(query, clazz);
|
||||||
query.setPageable(PageRequest.of(0, Math.max(1, itemCount)));
|
query.setPageable(PageRequest.of(0, Math.max(1, itemCount)));
|
||||||
} else {
|
} else {
|
||||||
query.setPageable(accessor.getPageable());
|
query.setPageable(accessor.getPageable());
|
||||||
}
|
}
|
||||||
|
|
||||||
return elasticsearchOperations.queryForList(query, queryMethod.getEntityInformation().getJavaType());
|
return elasticsearchOperations.queryForList(query, clazz);
|
||||||
} else if (tree.isCountProjection()) {
|
} else if (tree.isCountProjection()) {
|
||||||
return elasticsearchOperations.count(query, queryMethod.getEntityInformation().getJavaType());
|
return elasticsearchOperations.count(query, clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
return elasticsearchOperations.queryForObject(query, queryMethod.getEntityInformation().getJavaType());
|
return elasticsearchOperations.queryForObject(query, clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object countOrGetDocumentsForDelete(CriteriaQuery query, ParametersParameterAccessor accessor) {
|
private Object countOrGetDocumentsForDelete(CriteriaQuery query, ParametersParameterAccessor accessor) {
|
||||||
|
@ -64,17 +64,18 @@ public class ElasticsearchStringQuery extends AbstractElasticsearchRepositoryQue
|
|||||||
public Object execute(Object[] parameters) {
|
public Object execute(Object[] parameters) {
|
||||||
ParametersParameterAccessor accessor = new ParametersParameterAccessor(queryMethod.getParameters(), parameters);
|
ParametersParameterAccessor accessor = new ParametersParameterAccessor(queryMethod.getParameters(), parameters);
|
||||||
StringQuery stringQuery = createQuery(accessor);
|
StringQuery stringQuery = createQuery(accessor);
|
||||||
|
Class<?> clazz = queryMethod.getResultProcessor().getReturnedType().getDomainType();
|
||||||
if (queryMethod.isPageQuery()) {
|
if (queryMethod.isPageQuery()) {
|
||||||
stringQuery.setPageable(accessor.getPageable());
|
stringQuery.setPageable(accessor.getPageable());
|
||||||
return elasticsearchOperations.queryForPage(stringQuery, queryMethod.getEntityInformation().getJavaType());
|
return elasticsearchOperations.queryForPage(stringQuery, clazz);
|
||||||
} else if (queryMethod.isCollectionQuery()) {
|
} else if (queryMethod.isCollectionQuery()) {
|
||||||
if (accessor.getPageable().isPaged()) {
|
if (accessor.getPageable().isPaged()) {
|
||||||
stringQuery.setPageable(accessor.getPageable());
|
stringQuery.setPageable(accessor.getPageable());
|
||||||
}
|
}
|
||||||
return elasticsearchOperations.queryForList(stringQuery, queryMethod.getEntityInformation().getJavaType());
|
return elasticsearchOperations.queryForList(stringQuery, clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
return elasticsearchOperations.queryForObject(stringQuery, queryMethod.getEntityInformation().getJavaType());
|
return elasticsearchOperations.queryForObject(stringQuery, clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected StringQuery createQuery(ParametersParameterAccessor parameterAccessor) {
|
protected StringQuery createQuery(ParametersParameterAccessor parameterAccessor) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user