Подсчет запросов в spring-data-couchbase (N1QL)
Я пишу репозиторий couchbase с использованием модуля Spring и пытаюсь добавить собственную реализацию метода count с помощью запроса N1QL:
public interface MyRepository extends CouchbaseRepository<Entity, Long> {
@Query("SELECT count(*) FROM default")
long myCount();
}
Но это не работает:
org.springframework.data.couchbase.core.CouchbaseQueryExecutionException: Unable to retrieve enough metadata for N1QL to entity mapping, have you selected _ID and _CAS?
Итак, мой вопрос: как я могу написать запрос подсчета, используя spring-data-couchbase?
Я не могу найти ничего об этом в весенней документации. ссылка на сайт
2 ответа
Это исключение происходит потому, что @Query
аннотация была разработана с учетом варианта использования извлечения сущностей. Проекции на скалярное число являются раскрытыми угловыми случаями, начиная с RC1. Может быть, я могу придумать какой-нибудь способ добавить поддержку для него через явный логический флаг в аннотации?
К сожалению, я не смог найти обходной путь. Я пытался придумать реализацию метода нестандартного репозитория, но, похоже, его поддержка не работает в 2.0.0-RC1:(
edit: сценарий использования простых возвращаемых типов, таких как long, с SELECT, который использует только одну агрегацию, должен работать, так что это ошибка / улучшение. Я открыл билет DATACOUCH-187 в Spring Data JIRA.
@Query("SELECT count(*) , META(default).id as _ID, META(default).cas as _CAS FROM default")
Измените свой запрос на этот.
Используйте этот запрос:
@Query("SELECT count(*) as count FROM #{#n1ql.bucket} WHERE #{#n1ql.filter} ")
long myCount();