You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询Corda Vault并基于含指定字符串模式的字段检索State

Corda Vault模糊匹配查询解答

支持情况

Corda Vault原生支持字符串模糊匹配查询,效果与SQL语句的%xxx%模糊匹配完全一致,可以满足你筛选客户名称包含指定字符串的需求。

前置准备

在执行查询前,你需要先将State的客户名称、客户ID字段配置到自定义映射Schema中,示例配置如下:

// 1. 定义自定义映射Schema
object CustomerSchemaV1 : MappedSchema(
    schemaFamily = CustomerSchema::class.java,
    version = 1,
    mappedTypes = listOf(PersistentCustomer::class.java)
) {
    @Entity
    @Table(name = "customer_states")
    class PersistentCustomer(
        @Column(name = "customer_id", nullable = false)
        val customerId: String,

        @Column(name = "customer_name", nullable = false)
        val customerName: String
    ) : PersistentState()
}

// 2. 在你的CustomerState类中关联上述Schema
class CustomerState(
    val customerId: String,
    val customerName: String,
    override val participants: List<AbstractParty>
) : LinearState {
    override fun generateMappedObject(schema: MappedSchema): PersistentState {
        return when (schema) {
            is CustomerSchemaV1 -> CustomerSchemaV1.PersistentCustomer(
                customerId = customerId,
                customerName = customerName
            )
            else -> throw IllegalArgumentException("Unsupported schema $schema")
        }
    }

    override fun supportedSchemas(): Iterable<MappedSchema> = listOf(CustomerSchemaV1)
}

查询语法

使用Corda查询表达式的like运算符搭配通配符即可实现模糊匹配,示例代码如下:

// 构建模糊查询条件,匹配名称包含ash的记录
val fuzzyQueryCriteria = QueryCriteria.VaultCustomQueryCriteria(
    CustomerSchemaV1.PersistentCustomer::customerName.like("%ash%")
)

// 执行Vault查询
val queryResult = serviceHub.vaultService.queryBy<CustomerState>(fuzzyQueryCriteria)

// 提取匹配到的客户ID
val matchedCustomerIds = queryResult.states.map { it.state.data.customerId }

补充说明

  • 通配符规则与SQL标准一致:%匹配任意长度的任意字符,_匹配单个任意字符
  • 如果需要忽略大小写的模糊匹配,可将like替换为ilike运算符
  • 默认仅查询未消耗的State,如需查询包含已消耗的所有State,可在调用queryBy时添加参数Vault.StateStatus.ALL

内容的提问来源于stack exchange,提问作者Gomathi priya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:15:04