如何使用自定义查询获取状态?使用Spring Boot Web服务器的Corda应用程序-提取结果时出错

问题描述 投票:1回答:1

我已经在corda应用程序中创建了IOU,该IOU在主体,partyName中具有ID,xml负载。现在,我想使用基于ID的自定义查询来获取状态。注意-我没有使用linearID。

下面是我的API调用,这使我出现语法错误。有人可以纠正我,我做错了什么。

@GetMapping(value = ["getIous"],produces = [ MediaType.APPLICATION_JSON_VALUE])
    private fun getTransactionOne(@RequestParam(value = "payloadId") payloadId: String): ResponseEntity<List<IOUState>> {
        val generalCriteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.ALL)
        val results = builder { IOUState::iouId.equal(payloadId)
            val customCriteria = QueryCriteria.VaultCustomQueryCriteria(results)}

            val criteria = customCriteria.and(customCriteria)

            val res = proxy.vaultQueryBy<IOUState>(criteria)
            return ResponseEntity.ok(res)
    }
spring spring-boot kotlin corda
1个回答
0
投票

我认为问题是因为VaultCustomQueryCriteria仅适用于StatePersistable对象。因此,您应该使用PersistentIOU而不是IOUState。此外,我可能会看到括号的使用不正确。这是您的代码应如下所示:

@GetMapping(value = ["getIous"],produces = [ MediaType.APPLICATION_JSON_VALUE])
private fun getTransactionOne(@RequestParam(value = "payloadId") payloadId: String): ResponseEntity<List<IOUState>> {
        val generalCriteria = QueryCriteria.VaultQueryCriteria(Vault.StateStatus.ALL)
        val results = builder {
            val idx = IOUSchemaV1.PersistentIOU::iouId.equal(payloadId);
            val customCriteria = QueryCriteria.VaultCustomQueryCriteria(idx)
            val criteria = generalCriteria.and(customCriteria)
            proxy.vaultQueryBy<IOUState>(criteria);
        }
        return ResponseEntity.ok(results)
}
© www.soinside.com 2019 - 2024. All rights reserved.