我正在尝试将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/