spring-data-couchbase (N1QL) 中的计数查询

Counting query in spring-data-couchbase (N1QL)

我正在使用 Spring 模块编写 couchbase 存储库,我正在尝试使用 N1QL 查询添加我自己的计数方法实现:

public interface MyRepository extends CouchbaseRepository<Entity, Long> {
    @Query("SELECT count(*) FROM default")
    long myCount();
}

但是不行:

org.springframework.data.couchbase.core.CouchbaseQueryExecutionException: Unable to retrieve enough metadata for N1QL to entity mapping, have you selected _ID and _CAS?

所以我的问题是:如何使用 spring-data-couchbase 编写计数查询?

我在 spring 文档中找不到任何相关信息。 link

发生此异常是因为 @Query 注释在设计时考虑了 use-case 检索实体。从 RC1 开始,对类似计数的标量的投影是未发现的极端情况。也许我可以想出一些方法来通过注释中的显式布尔标志添加对它的支持?

很遗憾,我找不到解决方法。我试图想出一个自定义存储库方法实现,但它似乎在 2.0.0-RC1 中被破坏了:(

编辑: 简单 return 类型的用例,如 long,具有仅使用单个聚合的 SELECT,应该可以工作,所以这是 bug/improvement。我在 Spring Data JIRA 中打开了工单 DATACOUCH-187

@Query("SELECT count(*) , META(default).id as _ID, META(default).cas as _CAS FROM default")

将您的查询改成这个。

使用此查询:

 @Query("SELECT count(*) as count FROM #{#n1ql.bucket} WHERE #{#n1ql.filter} ")
 long myCount();