Blockchain Corda-使用Vault CustomQueryCriteria时出现问题
我试图将VaultCustomQueryCriteria(Corda-Java)与聚合函数SUM一起使用,但没有得到任何结果 如果我使用另一个Vault CustomQueryCriteria,则查询有效 我做错了什么 以下是一些例子: 查询确定:Blockchain Corda-使用Vault CustomQueryCriteria时出现问题,blockchain,corda,Blockchain,Corda,我试图将VaultCustomQueryCriteria(Corda-Java)与聚合函数SUM一起使用,但没有得到任何结果 如果我使用另一个Vault CustomQueryCriteria,则查询有效 我做错了什么 以下是一些例子: 查询确定: QueryCriteria statusCriteria = new QueryCriteria.VaultQueryCriteria(Vault.StateStatus.UNCONSUMED); Field name = ExampleSchem
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=新建QueryCriteria.Vault QueryCriteria(Vault.StateStatus.Unused);
Field name=ExampleSchemaV1.Ingestion.class.getDeclaredField(“名称”);
QueryCriteria countCriteria=新的QueryCriteria.VaultCustomQueryCriteria(Builder.equal(名称,“标记”);
List results=rpcOps.vaultQueryByCriteria(countCriteria,IngestionState.class).getState();
查询KO:(无结果)
QueryCriteria statusCriteria=新建QueryCriteria.Vault QueryCriteria(Vault.StateStatus.Unused);
字段编号=ExampleSchemaV1.Ingestion.class.getDeclaredField(“编号”);
Field name=ExampleSchemaV1.Ingestion.class.getDeclaredField(“名称”);
CriteriaExpression sumQta=Builder.sum(nr,Arrays.asList(name));
QueryCriteria sumQtaCriteria=新的QueryCriteria.VaultCustomQueryCriteria(sumQta);
QueryCriteria标准=statusCriteria.和(sumQtaCriteria);
List results=rpcOps.vaultQueryByCriteria(条件,InjectionState.class).getState();
每个vault查询返回一个vault.Page
对象。执行求和查询时,可通过Vault.Page.getOtherResults()
,而不是通过Vault.Page.getStates()
访问求和结果
这是因为sum查询不返回任何实际状态,而是对这些状态进行计算的结果
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();