Spring 数据自定义 N1QL 查询 returns 属性 文档为空
Spring data custom N1QL query returns property document to null
我正在使用 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);
returns 一些 PortfolioDocument
除了 id 属性 之外所有 属性 都为 null。
如果我调用 template.findByOne(id);
生成的对象就可以了。
你能帮帮我吗?
我找到了解决办法。正确的查询是:
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
方法构建查询的一部分。
我正在使用 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);
returns 一些 PortfolioDocument
除了 id 属性 之外所有 属性 都为 null。
如果我调用 template.findByOne(id);
生成的对象就可以了。
你能帮帮我吗?
我找到了解决办法。正确的查询是:
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
方法构建查询的一部分。