如何为Corda设置H2
我正在为一个示例cordapp重新编写并运行IssueFlow。 我可以看到流是成功的,并且可以在节点的vault查询中找到许多UTXO如何为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 我可以成功连接到此数
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)
}