基于PagingAndSortingRepository的Couchbase仓储如何禁用ReactiveCouchbase逻辑解决原生@Query查询NPE
Spring Data Couchbase 自定义原生查询误触发响应式执行链路问题
核心现象
在Spring Data Couchbase开发场景下,自定义仓储接口显式继承PagingAndSortingRepository,配置带原生SELECT语句的@Query注解方法时:
- 框架未按预期执行同步版仓储的处理逻辑
- 意外触发
ReactiveCouchbaseRepository的响应式处理链路 - 最终抛出空指针异常
堆栈定位结论
空指针异常出现在ReactiveFindByQueryOperationSupport类的方法执行流程中,完整调用链路覆盖Reactor核心组件、Couchbase SDK的网络请求与回调处理逻辑。
问题关联代码
对应的仓储接口定义如下:
public interface MyCouchbaseRepository extends PagingAndSortingRepository<Model, String> { @Query("SELECT * FROM bucket WHERE field1= $1 AND field2 = $2 AND field3 in $3 AND field4 <= $4") List<Model> method(String field1, String field2, JsonArray field3, long field4); }
对照测试结果
测试验证发现以下对照规律:
- 将查询语句替换为内置SpEL表达式写法
@Query("#{#n1ql.selectEntity} WHERE field1= $1 AND field2 = $2 AND field3 in $3 AND field4 <= $4")时,方法可正常运行 - 业务场景必须使用原生SELECT全字段查询的写法,需定位问题根本原因,禁用错误触发的
ReactiveCouchbaseRepository执行逻辑,保障自定义原生查询稳定运行
内容的提问来源于stack exchange,提问作者Aakash aggarwal
相关产品推荐
相关产品推荐

