java - Spring Data Couchbase - 获取 java.lang.ArrayIndexOutOfBoundsException:分页查询的索引 1 超出长度 1 的范围
问题描述
我正在研究使用 Spring Data Couchbase [Spring Boot 版本 2.4.2] 实现分页的要求。
自定义存储库接口扩展了 PagingAndSortingRepository
@Repository
public interface DocumentEntityRepository extends PagingAndSortingRepository<DocumentEntity, String> {
@Query("#{#n1ql.selectEntity} where #{#n1ql.filter} " +
"AND attribute1 IS NOT NULL " +
"AND ANY id IN attribute2 SATISFIES id IN [ #{#values} ] END"
)
Page<DocumentEntity> findByValue(@Param("values") String valueToBeSearched, Pageable pageable);
}
已为属性 1 和属性 2 创建索引。
属性 2 数据类型是Set<String>
.
抛出以下异常:
at org.springframework.data.repository.query.ExtensionAwareQueryMethodEvaluationContextProvider.lambda$collectVariables$0(ExtensionAwareQueryMethodEvaluationContextProvider.java:116)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.ArrayList$Itr.forEachRemaining(ArrayList.java:1032)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at org.springframework.data.repository.query.ExtensionAwareQueryMethodEvaluationContextProvider.collectVariables(ExtensionAwareQueryMethodEvaluationContextProvider.java:114)
at org.springframework.data.repository.query.ExtensionAwareQueryMethodEvaluationContextProvider.getEvaluationContext(ExtensionAwareQueryMethodEvaluationContextProvider.java:80)
at org.springframework.data.couchbase.repository.query.StringBasedN1qlQueryParser.getExpression(StringBasedN1qlQueryParser.java:413)
at org.springframework.data.couchbase.repository.query.StringBasedN1qlQueryParser.<init>(StringBasedN1qlQueryParser.java:126)
at org.springframework.data.couchbase.repository.query.StringN1qlQueryCreator.<init>(StringN1qlQueryCreator.java:87)
at org.springframework.data.couchbase.repository.query.N1qlRepositoryQueryExecutor.execute(N1qlRepositoryQueryExecutor.java:60)
at org.springframework.data.couchbase.repository.query.CouchbaseRepositoryQuery.execute(CouchbaseRepositoryQuery.java:42)
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137)
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121)
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:152)
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:131)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.couchbase.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133)
如果我在没有分页的情况下调用上述方法(在上述查询中添加 Offset 和 Limit 字段),即 List findByValue(@Param("values") String valueToBeSearched);
配置中是否缺少任何内容?
我尝试过扩展 CouchbaseRepository<> (它扩展了 PagingAndSortingRepository),但错误响应相同。
解决方案
推荐阅读
- python - Python,Matplotlib:当x为时间时如何设置轴范围?
- javascript - 我如何才能解决 serialport nodejs 包使用的承诺
- javascript - 使用时刻舍入到下一个第一个或第三个星期一
- javascript - 椭圆的计算点的意外结果
- java - 当我输入我的 SearchView 时,我的列表大小没有增加?
- sql - Bigquery 仅在不为空时选择列
- javascript - 是否有一个three.js函数来模拟相机运动?
- sql-server - SSIS:从 SQL 到数据流任务的变量
- python - Django 属性错误:“AttributeError:模块'django.db.models'没有属性'ManytoManyField'”
- javascript - 如何比较摩卡中的两个数组?