Пользовательский запрос данных Spring N1QL возвращает документ свойств в нуль

Я использую spring-data-couchbase 2.1.2, я переопределил репозиторий с помощью пользовательского запроса:

@Override
public List<PortfolioDocument> searchPortfolio() {

    CouchbaseOperations template = templateProvider.resolve(PortfolioRepository.class, PortfolioDocument.class); 

    String statement = "select META(ipdb).id AS _ID, META(ipdb).cas AS _CAS, * " + 
        "from ipdb where _class = 'com.ipdb.datamodel.document.PortfolioDocument' AND  title = 'dummytitle'";
    SimpleN1qlQuery query = N1qlQuery.simple(statement);;
    List<PortfolioDocument> portfolioDocuments = template.findByN1QL(query, PortfolioDocument.class);

    ....
}

template.findByN1QL(query, PortfolioDocument.class); возвращает некоторые PortfolioDocument со всеми свойствами, равными нулю, кроме свойства id. Если я вызову template.findByOne(id);, результирующий объект в порядке. Не могли бы вы мне помочь?


person Michel Foucault    schedule 16.07.2016    source источник


Ответы (1)


Я нашел решение. Правильный запрос:

SELECT META(`ipdb`).id AS _ID, META(`ipdb`).cas AS _CAS, `ipdb`.* FROM `ipdb` WHERE ...

Лучше всего использовать методы N1qlUtils, вы можете посмотреть пример ниже:

Statement statement = N1qlUtils.createSelectClauseForEntity(template.getCouchbaseBucket().name()).
  from(Expression.i(template.getCouchbaseBucket().name()))
    .where(".....");

Методы createSelectClauseForEntity и from строят часть запроса.

person Michel Foucault    schedule 17.07.2016