2016-07-16 6 views
1

私はspring-data-couchbase 2.1.2を使用していますがnullにプロパティのドキュメントを返し、私はカスタムクエリでリポジトリを再定義:春データカスタムN1QLクエリは

@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); idプロパティを除くヌルへのすべてのプロパティを持ついくつかのPortfolioDocumentを返します。 template.findByOne(id);に電話すると、結果のオブジェクトはOKです。 私を助けてもらえますか?

答えて

3

私は解決策を見つけました。正しいクエリは次のとおりです。

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("....."); 

createSelectClauseForEntityfrom方法は、クエリの一部を構築します。

関連する問題