首页 > 解决方案 > 在 Corda 的 H2 数据库中,我们需要提供自己的索引吗?

问题描述

我们使用的是默认的 H2 节点数据库。我们需要提供自己的数据库索引,还是由 Corda 自己创建?

标签: corda

解决方案


使用 H2 时,索引是使用 JPA 注释自动配置的。例如,Corda 为表创建索引,如下vault_linear_states所示:

@Entity
@Table(name = "vault_linear_states", indexes = arrayOf(
        Index(name = "external_id_index", columnList = "external_id"),
        Index(name = "uuid_index", columnList = "uuid")))
class VaultLinearStates(

在定义您自己的状态模式时,您可以为它们提供索引。例如,我们可以在Example CorDapp中为 IOU 表添加索引,如下所示:

@Entity
@Table(name = "iou_states", indexes = [Index(name="lender_idx", columnList = "lender")])
class PersistentIOU(
        @Column(name = "lender")
        var lenderName: String,

        @Column(name = "borrower")
        var borrowerName: String,

        @Column(name = "value")
        var value: Int,

        @Column(name = "linear_id")
        var linearId: UUID
) : PersistentState()

推荐阅读