@Override public <T> Collection<T> findAll(Class<T> entityClass, DatastoreQueryOptions queryOptions) { DatastorePersistentEntity<?> persistentEntity = this.datastoreMappingContext.getPersistentEntity(entityClass); EntityQuery.Builder builder = Query.newEntityQueryBuilder() .setKind(persistentEntity.kindName()); applyQueryOptions(builder, queryOptions, persistentEntity); return convertEntitiesForRead(getDatastoreReadWriter().run(builder.build()), entityClass); }
@Override public <T> Collection<T> findAll(Class<T> entityClass, DatastoreQueryOptions queryOptions) { DatastorePersistentEntity<?> persistentEntity = this.datastoreMappingContext.getPersistentEntity(entityClass); EntityQuery.Builder builder = Query.newEntityQueryBuilder() .setKind(persistentEntity.kindName()); applyQueryOptions(builder, queryOptions, persistentEntity); return convertEntitiesForRead(getDatastoreReadWriter().run(builder.build()), entityClass); }
applyQueryOptions(builder, queryOptions, persistentEntity); return builder.build();
private StructuredQuery applyQueryBody(Object[] parameters, StructuredQuery.Builder builder, boolean total) { ParameterAccessor paramAccessor = new ParametersParameterAccessor(getQueryMethod().getParameters(), parameters); if (this.tree.hasPredicate()) { applySelectWithFilter(parameters, builder); } Integer limit = null; Integer offset = null; if (this.tree.isExistsProjection()) { limit = 1; } else if (this.tree.isLimiting()) { limit = this.tree.getMaxResults(); } Sort sort = this.tree.getSort(); if (getQueryMethod().getParameters().hasPageableParameter()) { sort = sort.and(paramAccessor.getPageable().getSort()); } if (getQueryMethod().getParameters().hasSortParameter()) { sort = sort.and(paramAccessor.getSort()); } if (paramAccessor.getPageable().isPaged() && !total) { //for slice queries we retrieve one additional item to check if the next slice exists limit = paramAccessor.getPageable().getPageSize() + (isSliceQuery() ? 1 : 0); offset = (int) paramAccessor.getPageable().getOffset(); } DatastoreTemplate.applyQueryOptions( builder, new DatastoreQueryOptions(limit, offset, sort), this.datastorePersistentEntity); return builder.build(); }
private StructuredQuery applyQueryBody(Object[] parameters, StructuredQuery.Builder builder, boolean total) { ParameterAccessor paramAccessor = new ParametersParameterAccessor(getQueryMethod().getParameters(), parameters); if (this.tree.hasPredicate()) { applySelectWithFilter(parameters, builder); } Integer limit = null; Integer offset = null; if (this.tree.isExistsProjection()) { limit = 1; } else if (this.tree.isLimiting()) { limit = this.tree.getMaxResults(); } Sort sort = this.tree.getSort(); if (getQueryMethod().getParameters().hasPageableParameter()) { sort = sort.and(paramAccessor.getPageable().getSort()); } if (getQueryMethod().getParameters().hasSortParameter()) { sort = sort.and(paramAccessor.getSort()); } if (paramAccessor.getPageable().isPaged() && !total) { //for slice queries we retrieve one additional item to check if the next slice exists limit = paramAccessor.getPageable().getPageSize() + (isSliceQuery() ? 1 : 0); offset = (int) paramAccessor.getPageable().getOffset(); } DatastoreTemplate.applyQueryOptions( builder, new DatastoreQueryOptions(limit, offset, sort), this.datastorePersistentEntity); return builder.build(); }