Corda:error = org.hibernate.InstantiationException:没有实体的默认构造函数

我遇到了一个问题,请帮忙。 基于M13的Corda代码。 我的Schema代码主要是使用定义一个Schema来引用你的示例。

object LegalContractSchemaV1 : MappedSchema( schemaFamily = LegalContractSchema.javaClass, version = 1, mappedTypes = listOf(PersistentLegalContractState::class.java)) { @Entity @Table(name = "legal_contract_states") class PersistentLegalContractState( @Column(name = "contract_title`enter code here`") var contractTitle: String, @Column(name = "sender_name") var senderName: String, @Column(name = "recipient_name") var recipientName: String, @Column(name = "status") var status: String) : PersistentState(){ // constructor(stateRef: StateRef) : this(stateRef.txhash.bytes.toHexString(), stateRef.index) } 

Corda节点错误日志。 E 12:53:45 [rpc-server-handler-pool-0] vault.HibernateVaultQueryImpl._queryBy – org.hibernate.InstantiationException:实体的默认构造函数:com.legalcontract.schema.LegalContractSchemaV1 $ PersistentLegalContractState E 12:53: 45 [rpc-server-handler-pool-0] messaging.ObservableContext.sendMessage – 无法发送消息,踢客户端。 消息是RpcReply(id = RpcRequestId(toLong = 4982229886899153484),result = ErrorOr(value = null,error = org.hibernate.InstantiationException:没有实体的默认构造函数:: com.legalcontract.schema.LegalContractSchemaV1 $ PersistentLegalContractState))com.esotericsoftware .kryo.KryoException:Class org.hibernate.InstantiationException未注释或白名单中,因此不能用于序列化序列化跟踪:net.corda.core.serialization.CordaClassResolver.checkClass上的错误(net.corda.core.ErrorOr) (CordaClassResolver.kt:65)〜[corda-core-0.13.0.jar:?] at net.corda.core.serialization.CordaClassResolver.getRegistration(CordaClassResolver.kt:35)〜[corda-core-0.13.0。 jar:[]在com.esotericsoftware.kryo.Kryo.getRegistration(Kryo.java:488)〜[kryo-4.0.0.jar :?] at net.corda.nodeapi.RPCKryo.getRegistration(RPCStructures.kt:74) 〜[corda-node-api-0.13.0.jar :?] at com.esotericsoftware.kryo.util.DefaultClassResolver.writeClass(DefaultClassResolver.java:97)〜[kryo-4.0.0.jar :?]

我相信你需要添加一个默认的构造函数到PersistentLegalContractState的主体。 就像是:

 constructor() : this("", "", "", "")