为了账号安全,请及时绑定邮箱和手机立即绑定

Couchbase & Spring 查询错误:“返回原始类型的查询预计将返回 1 个结果

Couchbase & Spring 查询错误:“返回原始类型的查询预计将返回 1 个结果

蝴蝶不菲 2021-10-17 10:20:57
在我们的spring-boot 2.0.4.RELEASE应用程序中,我们使用Couchbase version 5.5.1 build 3511with Spring。我们在 Repository 接口中添加了一个新的删除方法:public interface CatRepository extends CouchbaseRepository<Cat, String> {  long deleteAllByName(String name);调用该方法时,文档从存储桶中删除,但我们收到以下错误:返回原始类型的查询预计将返回 1 个结果,得到 X该X 值根据删除的项目数而变化。在下面的示例中,删除了 27 个项目。这是完整的堆栈跟踪:    Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.data.couchbase.core.CouchbaseQueryExecutionException: Query returning a primitive type are expected to return exactly 1 result, got 27] with root causeorg.springframework.data.couchbase.core.CouchbaseQueryExecutionException: Query returning a primitive type are expected to return exactly 1 result, got 27    at org.springframework.data.couchbase.repository.query.AbstractN1qlBasedQuery.executeSingleProjection(AbstractN1qlBasedQuery.java:203) ~[spring-data-couchbase-3.0.9.RELEASE.jar:3.0.9.RELEASE]    at org.springframework.data.couchbase.repository.query.AbstractN1qlBasedQuery.executeDependingOnType(AbstractN1qlBasedQuery.java:143) ~[spring-data-couchbase-3.0.9.RELEASE.jar:3.0.9.RELEASE]    at org.springframework.data.couchbase.repository.query.AbstractN1qlBasedQuery.execute(AbstractN1qlBasedQuery.java:106) ~[spring-data-couchbase-3.0.9.RELEASE.jar:3.0.9.RELEASE]    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:590) ~[spring-data-commons-2.0.9.RELEASE.jar:2.0.9.RELEASE]    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:578) ~[spring-data-commons-2.0.9.RELEASE.jar:2.0.9.RELEASE]    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) ~[spring-aop-5.0.8.RELEASE.jar:5.0.8.RELEASE]我们还尝试将 的返回类型更改deleteAllByName(String name);为void,但结果相同。
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

据我所知,您必须返回要删除的对象:


@N1qlPrimaryIndexed

@ViewIndexed(designDoc = "maintenanceSchedule")

public interface MaintenanceScheduleRepository extends CouchbasePagingAndSortingRepository<MaintenanceSchedule, String> {


    List<MaintenanceSchedule> deleteByCompanyIdAndMaintenancePlanId(String companyId, String maintenancePlanId);


    List<MaintenanceSchedule> deleteByCompanyIdAndResourceIdAndMaintenancePlanIdIn(String companyId, String resourceId,

                                                                               List<String> maintenancePlanIds);


}

如果不需要删除的对象,最好的方法是直接执行 N1QL 查询。


查看完整回答
反对 回复 2021-10-17
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信