如何为Corda设置H2

如何为Corda设置H2,corda,Corda,我正在为一个示例cordapp重新编写并运行IssueFlow。 我可以看到流是成功的,并且可以在节点的vault查询中找到许多UTXO run vaultQuery contractStateType: com.example.state.IOUStat 我想查看持久存储(H2)中的数据 我已将以下内容添加到节点的配置中(对于具有不同端口的party A节点类似) 我可以在运行节点上看到DB url jdbc:h2:tcp://localhost:12344/node 我可以成功连接到此数

我正在为一个示例cordapp重新编写并运行IssueFlow。 我可以看到流是成功的,并且可以在节点的vault查询中找到许多UTXO

run vaultQuery contractStateType: com.example.state.IOUStat
我想查看持久存储(H2)中的数据

我已将以下内容添加到节点的配置中(对于具有不同端口的party A节点类似)

我可以在运行节点上看到DB url

jdbc:h2:tcp://localhost:12344/node
我可以成功连接到此数据库url。但是,我没有看到任何关于持久状态的表

对象模式
对象1:MappedSchema(
schemaFamily=ioicema.javaClass,
版本=1,
mappedTypes=listOf(PersistentIOU::class.java)){
@实体
@表(name=“iou国家”)
类PersistentIOU(
@列(name=“贷款人”)
var lenderName:String,
@列(name=“借款人”)
变量名:字符串,
@列(name=“value”)
var值:Int,
@列(name=“linear\u id”)
线性变量:UUID
):PersistentState(){
构造函数():此(“,”,0,UUID.randomUUID())
}
}
@BelongsToContract(IOUContract::class)
数据类Iute(val值:Int,
val贷款人:一方,
借款方:缔约方,
重写val linearId:UniqueIdentifier=UniqueIdentifier()):LinearState,QueryableState{

覆盖val参与者:列表,但在使用外部客户机(dbeaver)时,它似乎正在连接到不同的数据库连接到节点启动时显示的JDBC url。

我无法在H2实例中找到表,因为我的连接字符串错误&H2在尝试连接到不存在的数据库时正在创建空白数据库

在DBeaver中,您可以添加JDBCURL,但它会自动预先修复“JDBC:h2:”


您是否将
generateMappedObject()
()和
supportedSchemas()
()添加到您的状态?@adelCustom更新了帖子以显示我的状态类。
jdbc:h2:tcp://localhost:12344/node
object IOUSchema

object IOUSchemaV1 : MappedSchema(
        schemaFamily = IOUSchema.javaClass,
        version = 1,
        mappedTypes =  listOf(PersistentIOU::class.java)){

    @Entity
    @Table(name = "iou_states")
    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(){
        constructor() : this("","",0, UUID.randomUUID())
    }
}



@BelongsToContract(IOUContract::class)
data class IOUState (val value : Int,
                     val lender: Party,
                     val borrower : Party,
                     override val linearId: UniqueIdentifier = UniqueIdentifier()): LinearState, QueryableState {

    override val participants : List<AbstractParty> get() = listOf(lender,borrower)

    override fun generateMappedObject(schema: MappedSchema): PersistentState {
        return when (schema){
            is IOUSchemaV1 -> IOUSchemaV1.PersistentIOU(
                    this.lender.name.toString(),
                    this.borrower.name.toString(),
                    this.value,
                    this.linearId.id
            )
            else -> throw IllegalArgumentException("Unrecognised schema $schema")
        }
    }

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

}