Blockchain Corda-使用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

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

如果我使用另一个Vault CustomQueryCriteria,则查询有效

我做错了什么

以下是一些例子:

查询确定:

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