具有聚合函数的Corda查询

具有聚合函数的Corda查询,corda,Corda,我想计算可替换_令牌表中的行数。(Corda_OS 4.4 TokenSDK 1.2) 这是我的密码 @StartableByRPC class Count : FlowLogic<String>() { override val progressTracker = ProgressTracker() @Suspendable @Throws(FlowException::class) override fun call():String{

我想计算可替换_令牌表中的行数。(Corda_OS 4.4 TokenSDK 1.2)
这是我的密码

@StartableByRPC
class Count : FlowLogic<String>() {
    override val progressTracker = ProgressTracker()
    @Suspendable
    @Throws(FlowException::class)
    override fun call():String{
        val generalCriteria = QueryCriteria.VaultQueryCriteria(status = Vault.StateStatus.ALL)
        val count =PersistentFungibleToken::amount.count()
        val countCriteria = QueryCriteria.VaultCustomQueryCriteria(count)
        val criteria = generalCriteria.and(countCriteria)
        val queryBy: Vault.Page<FungibleToken> = serviceHub.vaultService.queryBy(criteria, PageSpecification())
        val resutCount = queryBy.otherResults[0] as Long
        return  "total : ${resutCount}"
    }
}

Vault.StateStatus.ALL不起作用?

我想你把它弄得有点复杂了。您试图实现的目标可以通过一个简单的查询完成:

 QueryCriteria countCriteria = new QueryCriteria.VaultCustomQueryCriteria(
     Builder.count(QueryCriteriaUtils.getField("amount", PersistentFungibleToken.class)),
     Vault.StateStatus.ALL
 );
 Vault.Page<FungibleToken> fungibleTokenPage = 
     activeParty.vaultQueryByCriteria(countCriteria, FungibleToken.class);
QueryCriteria countCriteria=new QueryCriteria.VaultCustomQueryCriteria(
Builder.count(QueryCriteriaUtils.getField(“amount”,PersistentFungibleToken.class)),
Vault.StateStatus.ALL
);
Vault.Page可替换目录页=
activeParty.vaultQueryByCriteria(countCriteria,FungibleToken.class);
但是,上一个复合查询中的问题是,如果未指定,Vault CustomQueryCriteria将以未使用状态进行初始化

 QueryCriteria countCriteria = new QueryCriteria.VaultCustomQueryCriteria(
     Builder.count(QueryCriteriaUtils.getField("amount", PersistentFungibleToken.class)),
     Vault.StateStatus.ALL
 );
 Vault.Page<FungibleToken> fungibleTokenPage = 
     activeParty.vaultQueryByCriteria(countCriteria, FungibleToken.class);