【问题标题】:Corda - Custom Vault Query for Null Column Not WorkingCorda - 空列的自定义 Vault 查询不起作用
【发布时间】:2021-06-11 12:58:35
【问题描述】:

考虑以下状态:

data class Example(val number: Int?, override val participants: List<AbstractParty>) : QueryableState {

    override fun generateMappedObject(schema: MappedSchema): PersistentState = when (schema) {
        is ExampleEntity.ExampleSchema.ExampleSchemaV1 -> ExampleEntity(number = number)
        else -> throw IllegalArgumentException("Unrecognised schema: $schema.")
    }

    override fun supportedSchemas(): Iterable<MappedSchema> {
        return listOf(ExampleEntity.ExampleSchema.ExampleSchemaV1)
    }
}

另外,考虑以下实体:

@Entity
@Table(name = "example_states")
class ExampleEntity(
    @Column(name = "number", nullable = true)
    val number: Int? = null
) : PersistentState() { ... }

在查询中,我使用以下条件表达式:

ExampleEntity::number.equal(null)

这似乎无法正确查询number 的行条目为空的状态。我做错了吗?

【问题讨论】:

    标签: corda


    【解决方案1】:

    看来 null 和 not null 是独立处理的。 null 的条件表达式为:

    ExampleEntity::number.isNull()
    

    因此需要实现额外的逻辑来正确执行查询:

    expression = if(number == null) {
        ExampleEntity::number.isNull()
    } else {
        ExampleEntity::number.equal(number)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      相关资源
      最近更新 更多