我一直在使用Corda Enterprise 3.2和SQL Server数据库运行CorDapp。最近更新了CorDapp之后,我现在看到此错误:
由于:java.io.NotSerializableException: net.corda.core.contracts.TransactionState-> net.corda.core.contracts.TransactionState-> 数据(net.corda.core.contracts.ContractState)-> 发票(java.util.Set)-> java.util.Set
->新建 参数foo是强制性的,必须为空才能使演化正常工作
为什么升级会导致此异常?
答案 0 :(得分:0)
请问更多信息,您是否已经第一次执行数据库迁移以部署Corda Enterprise? 跟随此链接https://docs.corda.r3.com/database-management.html#database-management-tool
答案 1 :(得分:0)
Corda中的状态演化要求添加到状态的所有新字段都可以为空,因为它们可能是从不具有该字段的状态的先前版本创建的,因此nullable是针对新实例化状态的唯一逻辑选项对象结构。
例如...
data class OldState(val foo: Int)
data class NewState(val foo: Int, var bar: String? = null)
从OldState
升级到NewState
会将foo
映射到foo
,因为属性相同,但是由于存在在以前的状态下,没有任何东西可以使用不可为空的值填充该字段。