@Query с параметром Pageable в spring-data-couchbase

Я пытаюсь добавить свой собственный (пользовательский) метод findMembersByName в свой репозиторий 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!

Все работает нормально, если я удаляю нумерацию страниц, поэтому мой запрос в порядке. Возникла проблема с передачей аргумента «имя» оператору.

Как мне передать дополнительный параметр для запроса при использовании разбиения на страницы?


person IgorekPotworek    schedule 19.01.2016    source источник


Ответы (1)


Запросы страницы/фрагмента не имеют особого смысла со встроенными запросами N1QL.

Это связано с тем, что по определению каждая новая страница должна использовать слегка измененный запрос (ограничение и смещение на текущей странице). Это не то, что мы поддерживаем с помощью простого оператора String.

(примечание: однако это конкретное сообщение все еще может быть связано с ошибкой в ​​Spring Data Commons)

person Simon Baslé    schedule 19.01.2016
comment
Но в документации есть пример, где встроенный запрос N1QL используется с Pageable — параграф 5.4.6. : docs.spring.io/spring- data/couchbase/docs/2.0.0.RC1/reference/ - person IgorekPotworek; 19.01.2016
comment
параграф 5 включает общую документацию общего назначения, она есть во всех модулях Spring Data, но в качестве модуля примеров используется JPA. В Spring Data Couchbase на данный момент я просто недостаточно уверен, что могу безопасно изменить встроенный запрос и поддерживать страницы с такими запросами. - person Simon Baslé; 19.01.2016
comment
Ok. Большое спасибо. - person IgorekPotworek; 19.01.2016
comment
ошибка, с которой вы столкнулись (не основная причина), была исправлена ​​:) jira.spring.io/browse /DATACMNS-804 - person Simon Baslé; 22.01.2016
comment
В Spring Data JPA эта проблема решается с помощью необязательного countQuery предоставляется отдельно. Не могли бы вы сделать что-то подобное? (с заполнителем #n1ql.paging в пользовательском запросе для ввода значений LIMIT и OFFSET) - person Didier L; 08.04.2019