如何编写一个 Spring JPA 存储库方法名称来激活 Couchbase 中的 Distinct 子句?
How to write a Spring JPA repository method name to activate the Distinct clause in Couchbase?
正在开发使用 Spring Data Couchbase 2.2 的 Java 应用程序。0.RELEASE...
从代表 Book
objects 的 JSON objects 列表开始:
[
{id: 123, title: "Abc", category: "A"},
{id: 456, title: "Efg", category: "B"},
{id: 789, title: "Abc", category: "A"}
]
Book
objects 的数组被插入到 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"}
我是不是方法名写错了?
SDC 当前不支持不同的查询派生。我已经创建了一张增强票 here。同时,您可以通过直接使用 @Query
而不是 n1ql.selectEntity 来变通,提供 select 部分。
如果您只获取标题,SDC 支持 projections。
interface OnlyTitle {
String getTitle();
}
@Query(...)
OnlyTitle findDistinctTitleByCategory(String category);
正在开发使用 Spring Data Couchbase 2.2 的 Java 应用程序。0.RELEASE...
从代表 Book
objects 的 JSON objects 列表开始:
[
{id: 123, title: "Abc", category: "A"},
{id: 456, title: "Efg", category: "B"},
{id: 789, title: "Abc", category: "A"}
]
Book
objects 的数组被插入到 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"}
我是不是方法名写错了?
SDC 当前不支持不同的查询派生。我已经创建了一张增强票 here。同时,您可以通过直接使用 @Query
而不是 n1ql.selectEntity 来变通,提供 select 部分。
如果您只获取标题,SDC 支持 projections。
interface OnlyTitle {
String getTitle();
}
@Query(...)
OnlyTitle findDistinctTitleByCategory(String category);