2017-07-17 7 views
2

Als ich versuchte, unter codes zu verwenden, um den Zustand von linearId abzurufen, habe ich 2 Datensätze zurückgegeben, eine ist die konsumierte, die andere ist die unverbrauchte. Die initiale linearId wurde von web api übernommen.serviceHub.vaultQueryService.queryBy gibt standardmäßig alle zugehörigen Status zurück?

val linearId: UniqueIdentifier = UniqueIdentifier(null, UUID.fromString(legalContractState.legalContract.linearId)) 
val linearIds = listOf(linearId) 
val linearStateCriteria = QueryCriteria.LinearStateQueryCriteria(linearId = listOf(linearIds.first(), linearIds.last())) 
val states = serviceHub.vaultQueryService.queryBy(LegalContractState::class.java, linearStateCriteria).states 
val inputState: StateAndRef<LegalContractState> = serviceHub.vaultQueryService.queryBy(LegalContractState::class.java, linearStateCriteria).states.single() 

Aber aus einem Beispielcode auf den vault api page, sagt er dies einen unverbrauchten Zustand zurückkehren wird basierend auf einem linearId, habe ich auch die Daten in H2 Datenbank VAULT_STATES Tabelle geprüft, es gibt 2 Datensätze, hat man ein CONSUMED_TIMESTAMP und sein STATE_STATUS ist 1, aber der andere CONSUMED_TIMESTAMP ist NULL und STATE_STATUS ist 0. Dies ist ein nicht gemeinsamer Zustand, der nur in meiner Datenbank gespeichert ist, und ich habe ein Update dafür ausgeführt, also idealerweise einen konsumierten Zustand und einen neuen Ausgangszustand in db. Jetzt bin ich mir nicht sicher, was hier falsch ist.

Abfrage für unverbrauchte lineare Zustände für gegebene lineare ids:

val linearIds = issuedStates.states.map { it.state.data.linearId }.toList() 
val criteria = LinearStateQueryCriteria(linearId = listOf(linearIds.first(), linearIds.last())) 
val results = vaultQuerySvc.queryBy<LinearState>(criteria) 

Antwort

Verwandte Themen