使用Spring Data Couchbase 2.2.0.RELEASE ...
的Java应用程序从表示Book
个对象的JSON对象列表开始:
[
{id: 123, title: "Abc", category: "A"},
{id: 456, title: "Efg", category: "B"},
{id: 789, title: "Abc", category: "A"}
]
将Book
个对象数组插入到Couchbase中。之后,应用程序希望根据类别过滤器获取不同书籍标题的列表。在一些Spring文档之后,我在BookRepository
界面中找到了这个方法名称:
List<Book> findDistinctTitleByCategory(String category);
但是,Spring创建的查询不包含标题的Distinct
子句。这里是Spring发送到CB集群的最终查询,其中桶名称为default
:
Executing N1QL query: {"statement":"SELECT META(`default`).id AS _ID, META(`default`).cas AS _CAS, `default`.* FROM `default` WHERE (`category` = \"A\")","scan_consistency":"not_bounded"}
我写的方法名称错了吗?
答案 0 :(得分:2)
SDC目前不支持distinct的查询派生。我创建了一张增强版的凭单here。在此期间,您可以直接使用@Query
而不是n1ql.selectEntity来解决,提供选择部分。
如果您只提取标题,SDC支持projections。
interface OnlyTitle {
String getTitle();
}
@Query(...)
OnlyTitle findDistinctTitleByCategory(String category);