当前位置: 首页 > 知识库问答 >
问题:

Corda-使用VaultCustomQueryCriteria的问题

昝卓
2023-03-14

我正在尝试将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();

共有1个答案

益稳
2023-03-14

每个vault查询都会返回一个vault。页面对象。执行总和查询时,可以通过Vault.Page访问总和的结果。getOtherResults(),而不是通过Vault.Page.getStates()。

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

 类似资料:
  • Corda 是一个分布式账本平台,用于记录,管理和自动化业务合作伙伴之间的法律协议。由世界上最大的金融机构设计,并且在多个行业都有应用。它针对分散式应用程序面临的隐私和可扩展性挑战提供了独特的响应。 特点: 用Java和其他JVM语言编写的智能合约 流程框架来管理参与者之间的沟通和协商 点对点网络节点 “公证”基础设施来验证交易的唯一性和排序 启用称为CorDapps的分布式应用程序的开发和部署 用Kotlin编写,基于JVM

  • 我在台阶下表演。 > 我已更改corda流并删除了此行Builder.SetTimeWindow(ServiceHub.Clock.Instant(),30.seconds) 现在执行“gradle jar”命令只构建jar,因此创建了新的corda应用程序jar。例如旧版本“abc-1.1.jar”到新版本“abc-1.2.jar” 现在我在cordapps文件夹中为node部署了新的“abc-

  • 这是我能够产生问题的代码。

  • 我使用下面的配置来构建Notary Cluster并启动它们。我在V14版本中使用了这样的脚本,这没关系。但是在V1中弹出那个错误。请帮我检查一下。 task-deployNodesRAFT(类型:net.corda.plugins.Cordform,依赖于:['jar']){

  • 我尝试使用uploadAttachemnt方法上传zip文件,得到了一个secureHash作为输出。我试图下载相同的附件,使用hash作为openAttachmnet方法的输入,得到了一个InputStream。当我试图使用BuffeReader读取inputStream的内容时,它被加密了。我意识到我必须解压缩文件并读取它,所以我得到了这个包“import java.util.zip.ZipE

  • 帐户sdk的依赖关系没有完全下载。corda-lib-dev中的错误。 https://ci-artifactory.corda.r3cev.com/artifactory/corda-lib-dev/com/r3/corda/lib/accounts/accounts-workflows/1.0-RC04/accounts-workflows-1.0-RC04.pom我还检查了上面的链接。显示4