blockchain - Corda Enterprise 在运行测试用例时为自定义模式抛出“net.corda.core.node.services.VaultQueryException”
问题描述
根据 Corda 企业文档,我们添加了如下自定义模式
fun setup() {
network = MockNetwork(cordappPackages = listOf("com.xxx.service", "com.xxx.yyy", "com.xxx.zzzz", "com.xxx.kkk", "com.xxx.ttt", "com.xxx.yyyy.schema"))
}
或者
fun setup() {
network = MockNetwork(listOf("com.xxx.service", "com.xxx.yyy", "com.xxx.zzzz", "com.xxx.kkk", "com.xxx.ttt", "com.xxx.yyyy.schema"))
}
在运行测试用例时,我们面临以下问题,
[INFO] 12:11:35,213 [main] cordapp.CordappLoader.scanCordapp - Scanning CorDapp in file:/C:/Users/************/generated-test-cordapps/com.xxx.service-c7ab4ac5-fd21-40ae-86e6-18cc219b3179.jar
[INFO] 12:11:35,862 [main] hikari.HikariDataSource.<init> - HikariPool-1 - Started.
[WARN] 12:11:37,726 [main] persistence.SchemaMigration.doRunMigration - No migration defined for schema: com.xxx.yyy.schema.yyyy v1
[WARN] 12:11:37,733 [main] persistence.SchemaMigration.doRunMigration - No migration defined for schema: com.xxx.yyy.schema.xxxStateSchema v1
[INFO] 12:11:40,127 [main] persistence.SchemaMigration.doRunMigration - defaultSchemaName=PUBLIC
net.corda.core.node.services.VaultQueryException:
Please register the entity 'com.xxx.yyyy.schema.XXXXSchemaV1$XXXX'
See https://docs.corda.net/api-persistence.html#custom-schema-registration for more information
需要帮助。
解决方案
在 Corda Enterprise 中,模式类需要具有相应的带有表定义的 Liquibase 迁移脚本。此脚本将创建后备表。错误
persistence.SchemaMigration.doRunMigration - No migration defined for schema: com.xxx.yyy.schema.yyyy v1*
建议这样做,但您也可能错误地配置了脚本文件名。如果模式类没有覆盖migrationResource字段,那么具有 Liquibase 模式的文件名需要遵循模式大写更改为小写,前面带有连字符,例如类
com.example.MyMappedSchema
相关的脚本文件预计为
my-mapped-schema.changelog-master.XXX,其中 XXX 可以是xml、sql、yml或json
该文件需要放在资源/迁移源文件夹中,以便在 Cordapp JAR 中复制(或用于测试)。如果您的架构类具有迁移资源,那么 Liquibase 脚本仍需要位于资源/迁移文件夹下。
推荐阅读
- python - 使用 Python 抓取网页时绕过 cookie 协议页面
- angular - 将控制台错误检测为错误并使测试失败
- wordpress - 付费会员 Pro 和 Stripe 的 PCI 合规性
- node.js - 向我的项目添加代码块时出现问题。无法读取已定义的属性“args”
- r - 冲突的部分依赖结果?
- c++ - 获取 long double 的二进制表示的正确方法是什么?
- ios - 来自绑定的 Xamarin iOS 单例属性始终在真实设备上返回 null
- java - 使用 owlapi 收集不相交公理中的表达式
- doxygen - 使用 "\return" 作为 "\brief"
- android - Jetpack Compose:如何保持跨页面/可组合的 UI 状态?