【问题标题】:@Query with Pageable parameter in spring-data-couchbase@Query 与 spring-data-couchbase 中的 Pageable 参数
【发布时间】:2016-01-19 17:28:53
【问题描述】:

我正在尝试将我自己的(自定义)findMembersByName 方法添加到我的沙发库存储库中。

我的代码如下所示:

public interface MembersRepository extends PagingAndSortingRepository<Member, Long>, MembersRepositoryCustom {
    @Query("#{#n1ql.selectEntity} WHERE (IFMISSING(firstname,'') || ' ' || IFMISSING(lastname,'')) LIKE $1 AND #{#n1ql.filter}")
    Page<Member> findMembersByName(String name, Pageable pageable);
}

但如果我尝试运行此方法,我会得到异常:

org.springframework.data.repository.query.ParameterOutOfBoundsException: Invalid parameter index! You seem to have declare too little query method parameters!

如果我删除分页,一切正常,所以我的查询很好。 将“名称”参数传递给语句时出现问题。

当我使用分页时,我应该如何传递额外的参数来查询?

【问题讨论】:

    标签: java spring couchbase spring-data-couchbase


    【解决方案1】:

    Page/Slice 查询对于内联 N1QL 查询没有多大意义。

    这是因为根据定义,每个新页面都必须使用稍微修改的查询(在当前页面上进行限制和偏移)。这不是我们支持的纯字符串语句。

    (注意:但是,此特定消息可能仍来自 Spring Data Commons 中的错误)

    【讨论】:

    • 但在文档中是内联 N1QL 查询与 Pageable 一起使用的示例 - 第 5.4.6 段。 :docs.spring.io/spring-data/couchbase/docs/2.0.0.RC1/reference/…
    • 第 5 段是通用公共文档的包含,所有 Spring Data 模块都有它,但它使用 JPA 作为示例模块。目前在 Spring Data Couchbase 中,我还没有足够的信心可以安全地改变内联查询并支持使用此类查询进行分页。
    • 好的。非常感谢。
    • 您遇到的错误(不是根本原因)已修复 :) jira.spring.io/browse/DATACMNS-804
    • 在 Spring Data JPA 中,他们使用单独提供的可选 countQuery 来处理此问题。你不能做类似的事情吗? (在自定义查询中使用 #n1ql.paging 占位符来注入 LIMITOFFSET 值)
    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 2016-09-11
    • 2020-12-10
    • 2019-02-08
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多