【发布时间】:2019-02-01 15:56:34
【问题描述】:
我想在数据库中创建具有唯一 ID 的状态。有我的州代码
data class SampleState(
val partyA: Party,
val partyB: Party,
val value: Int,
val id: String,
override val linearId: UniqueIdentifier = UniqueIdentifier(id),
val properties: LCProperties = LCProperties("ABC")) : LinearState {...}
当我提交两个相似的 SampleState 时,数据库中有两个不同的 State,具有两个不同的 linearId。那么,有谁能告诉我,如何确保数据库中 SampleState 对象的“id”是唯一的? 我在 Flows 和 Contracts 中使用相同的代码来捕获这种情况,例如
val results = builder {
val quantityIndex = SampleSchemaV1.PersistentSample::id.equal(id);
val customCriteria1 = QueryCriteria.VaultCustomQueryCriteria(quantityIndex)
val criteria = generalCriteria.and(customCriteria1);
serviceHub.vaultService.queryBy<SampleState>(criteria)
}
if(results.states.count() > 0)
throw IllegalArgumentException("id $id is exist")
但是,即使在 1 秒内(提交事务 1,1 秒后,提交事务 2),它也不能在几乎相似的时间内处理两个提交样本状态事务
【问题讨论】:
标签: corda