Corda - 使用VaultCustomQueryCriteria时遇到问题。

3

我正在尝试使用带有聚合函数SUM的VaultCustomQueryCriteria (Corda - Java),但是我没有得到结果。

如果我使用另一个VaultCustomQueryCriteria,则查询有效。

我做错了什么?

以下是一些示例:

查询成功:

QueryCriteria statusCriteria = new QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED);

Field name = ExampleSchemaV1.Ingestion.class.getDeclaredField("name");

QueryCriteria countCriteria = new QueryCriteria.VaultCustomQueryCriteria(Builder.equal(name, "Mark"));
List<StateAndRef<IngestionState>> results = rpcOps.vaultQueryByCriteria(countCriteria,IngestionState.class).getStates();

查询失败:(无结果)

QueryCriteria statusCriteria = new QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED);

Field nr = ExampleSchemaV1.Ingestion.class.getDeclaredField("nr");    
Field name = ExampleSchemaV1.Ingestion.class.getDeclaredField("name");

CriteriaExpression sumQta = Builder.sum(nr, Arrays.asList(name));    
QueryCriteria sumQtaCriteria = new QueryCriteria.VaultCustomQueryCriteria(sumQta);

QueryCriteria criteria = statusCriteria.and(sumQtaCriteria);

List<StateAndRef<IngestionState>> results = rpcOps.vaultQueryByCriteria(criteria,IngestionState.class).getStates();
1个回答

1
每个保险库查询都返回一个 Vault.Page 对象。执行求和查询时,可以通过 Vault.Page.getOtherResults() 访问求和结果,而不是通过 Vault.Page.getStates() 访问。

这是因为求和查询不返回任何实际状态,而是计算这些状态的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接