spring-boot - Couchbase 的 Spring Data - 计算数据库中的元素
问题描述
我是使用 Spring Data for Couchbase 的新手,我定义了这个对象
public class Building {
@NotNull
@Id
private String id;
@NotNull
@Field
private String name;
@NotNull
@Field
private String companyId;
}
我想按 ID 计算数据库中的所有元素,所以我创建了这个函数:
@Repository
@N1qlPrimaryIndexed
@ViewIndexed(designDoc = "building")
public interface BuildingRepository extends CouchbaseRepository<Building, String> {
@Query("SELECT COUNT(*) AS count FROM #{#n1ql.bucket} WHERE #{#n1ql.filter} and id = $1")
Long countBuildings(String id);
}
但我得到0,就在保存对象之后
我也试过
@Query("#{#n1ql.selectEntity} WHERE #{#n1ql.filter} and id = $1")
Long countBuildings(String id);
但我得到了这个例外
org.springframework.data.couchbase.core.CouchbaseQueryExecutionException: Query returning a primitive type are expected to return exactly 1 result, got 0
解决方案
如果您参考这个问题:Couchbase & Spring 查询错误:“返回原始类型的查询预计会返回 1 个结果,得到 X”
看起来您需要返回查询返回的对象,即 Building
你也可以参考spring-data-couchbase repoLine 204-209:https ://github.com/spring-projects/spring-data-couchbase/blob/master/src/main/java/org/springframework/data/ couchbase/repository/query/AbstractN1qlBasedQuery.java#L204
204-209 行
推荐阅读
- amazon-web-services - cloudformation子函数中的`|-`是什么意思?
- jquery - 折叠并跳转到 div 顶部
- graphql - .GraphQL 导入另一个 .graphql 后缺少类型
- nuxt.js - 如何使用 Nuxt.js 将元素复制到剪贴板?
- asp.net-core - 退出后无法重新登录
- html - 使用开发者控制台禁用表单输入和用户修改
- html - 无法捕捉滚动事件 IONIC V3
- swift - 在扩展名中打印文件名
- python - 将对象序列化为python代码而不是pickle
- python - 如何从 django_tables2 编辑和删除行并在表和下一个和上一个按钮中进行过滤搜索