如何使用custome查询获取状态?Corda应用程序使用Spring boot webserver-获取结果时出错

如何使用custome查询获取状态?Corda应用程序使用Spring boot webserver-获取结果时出错,spring,spring-boot,kotlin,corda,Spring,Spring Boot,Kotlin,Corda,我已经在corda应用程序中创建了IOU,IOU有ID,正文中有xml有效负载,partyName。现在,我想使用基于ID的custome查询获取状态。注意-我没有使用linearID 下面是我的API调用-它给我的语法错误。有人能纠正我吗,我做错了什么 @GetMapping(value = ["getIous"],produces = [ MediaType.APPLICATION_JSON_VALUE]) private fun getTransactionOne(@Request

我已经在corda应用程序中创建了IOU,IOU有ID,正文中有xml有效负载,partyName。现在,我想使用基于ID的custome查询获取状态。注意-我没有使用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)
    }
@GetMapping(值=[“getIous”],产生=[MediaType.APPLICATION\u JSON\u value])
private fun getTransactionOne(@RequestParam(value=“payloadId”)payloadId:String):ResponseEntity{
val generalCriteria=QueryCriteria.Vault QueryCriteria(Vault.StateStatus.ALL)
val results=builder{iIoState::iouId.equal(payloadId)
val customCriteria=QueryCriteria.VaultCustomQueryCriteria(结果)}
val标准=customCriteria.和(customCriteria)
val res=proxy.vaultQueryBy(标准)
返回响应正确(res)
}

我认为问题是因为
VaultCustomQueryCriteria
仅适用于
StatePersistable
对象。因此,您应该使用
PersistentIOU
而不是
iostate
。此外,我可以看到括号的使用不正确。以下是您的代码的外观:

@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)
}
@GetMapping(值=[“getIous”],产生=[MediaType.APPLICATION\u JSON\u value])
private fun getTransactionOne(@RequestParam(value=“payloadId”)payloadId:String):ResponseEntity{
val generalCriteria=QueryCriteria.Vault QueryCriteria(Vault.StateStatus.ALL)
val结果=生成器{
val idx=ioicemav1.PersistentIOU::iouId.equal(payloadId);
val customCriteria=QueryCriteria.VaultCustomQueryCriteria(idx)
val标准=一般标准和(自定义标准)
代理保险库查询(标准);
}
返回ResponseEntity.ok(结果)
}

我认为问题是因为
VaultCustomQueryCriteria
仅适用于
StatePersistable
对象。因此,您应该使用
PersistentIOU
而不是
iostate
。此外,我可以看到括号的使用不正确。以下是您的代码的外观:

@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)
}
@GetMapping(值=[“getIous”],产生=[MediaType.APPLICATION\u JSON\u value])
private fun getTransactionOne(@RequestParam(value=“payloadId”)payloadId:String):ResponseEntity{
val generalCriteria=QueryCriteria.Vault QueryCriteria(Vault.StateStatus.ALL)
val结果=生成器{
val idx=ioicemav1.PersistentIOU::iouId.equal(payloadId);
val customCriteria=QueryCriteria.VaultCustomQueryCriteria(idx)
val标准=一般标准和(自定义标准)
代理保险库查询(标准);
}
返回ResponseEntity.ok(结果)
}

哪行出现语法错误?第1行-val customCriteria=QueryCriteria.VaultCustomQueryCriteria(结果)}第2行-val criteria=customCriteria.and(customCriteria),第3行-return ResponseEntity.ok(res)哪行出现语法错误?第1行-val customCriteria=QueryCriteria.VaultCustomQueryCriteria(结果)}第2行-val标准=customCriteria.and(customCriteria),第3行-返回响应性.ok(res)