#spring #spring-boot #kotlin #corda
#spring #spring-boot #kotlin #corda
Вопрос:
Я создал долговую расписку в приложении corda, долговая расписка имеет идентификатор, полезную нагрузку xml в теле, имя участника. ТЕПЕРЬ я хочу получить состояние с помощью пользовательского запроса, основанного на идентификаторе. ПРИМЕЧАНИЕ — я не использую 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)
}
Комментарии:
1. в какой строке вы получаете синтаксическую ошибку?
2. Строка 1- значение customCriteria = QueryCriteria. VaultCustomQueryCriteria(результаты)} Строка 2- критерий значения = customCriteria.and (customCriteria), строка 3- возвращает ResponseEntity.ok (res)
Ответ №1:
Я думаю, проблема в том, что 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)
}