2016-01-19 149 views
0

我试图将我自己的(自定义)findMembersByName方法添加到我的couchbase存储库中。@Query with Pageable参数在spring-data-couchbase中

我的代码如下所示:

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! 

所有工作正常,如果我删除分页,所以我的查询是罚款。 传递语句的'name'参数存在问题。

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

回答

1

页面/切片查询对于内联的N1QL查询没有多大意义。

这是因为根据定义,每个新页面都必须使用略有修改的查询(限制和偏移当前页面)。这不是我们用普通的String语句支持的东西。

(注:然而,该特定消息仍然可以是来自一个错误Spring Data Commons

+0

但在文档是示例,其中内联N1QL查询用于与可分页 - 段落5.4.6。 :http://docs.spring.io/spring-data/couchbase/docs/2.0.0.RC1/reference/html/ – IgorekPotworek

+0

第5段是包含通用公共文档,所有Spring Data模块都有它,但它使用JPA作为示例的模块。在现在的Spring Data Couchbase中,我只是不够自信,我可以安全地改变内联查询并支持可查询的页面。 –

+0

好的。非常感谢你。 – IgorekPotworek