blockchain - Corda - 使用 VaultCustomQueryCriteria 的问题

标签 blockchain corda

我尝试将 VaultCustomQueryCriteria (Corda - Java) 与聚合函数 SUM 结合使用,但没有得到任何结果。

如果我使用另一个 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();

查询KO:(无结果)

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

最佳答案

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

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

关于blockchain - Corda - 使用 VaultCustomQueryCriteria 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755664/

相关文章:

gradle - 无法删除文件:C:\Users\…\corda-settler-manual\cordapp-contracts-states\build\libs\cordapp-contracts-states-0.1.jar

security - 在 EVM 区 block 链中存储 secret

java - 私有(private)以太坊区 block 链中循环构造的 CompletableFuture

blockchain - 如何向现有的 Hyperledger Fabric 网络添加新的对等点?

corda - 自定义 Corda SQL 语句示例

java - 如何使用 Corda-Spring-Webserver 实现查询过滤?

enterprise - 如何运营 corda 企业

constraints - 在哪里检查契约(Contract)约束

blockchain - 检查交易状态的最佳方法是什么?

java - 在 Corda 中将状态标记为已消耗而不更改其内容