首页 文章

如何编写Spring JPA存储库方法名来激活Couchbase中的Distinct子句?

提问于
浏览
1

使用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中 . 之后,应用程序希望根据类别过滤器获取不同书籍 Headers 的列表 . 在一些Spring文档之后,我在 BookRepository 界面中找到了这个方法名:

List<Book> findDistinctTitleByCategory(String category);

但是,Spring创建的查询不包含 Headers 的 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"}

我写的方法名称错了吗?

1 回答

  • 2

    SDC目前不支持distinct的查询派生 . 我已经创建了一个增强的票证here . 在此期间,您可以直接使用 @Query 而不是n1ql.selectEntity来解决,提供选择部分 .

    如果您只提取 Headers ,SDC支持projections .

    interface OnlyTitle {
        String getTitle(); 
    }
    
    @Query(...)
    OnlyTitle findDistinctTitleByCategory(String category);
    

相关问题