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

标签 kotlin corda

我遇到了一个问题,请帮忙。基于 M13 的 Corda 代码。我的架构代码主要用于定义架构引用您的示例。

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 Node error Log. E 12:53:45 [rpc-server-handler-pool-0] vault.HibernateVaultQueryImpl._queryBy - org.hibernate.InstantiationException: No default constructor for entity: : com.legalcontract.schema.LegalContractSchemaV1$PersistentLegalContractState E 12:53:45 [rpc-server-handler-pool-0] messaging.ObservableContext.sendMessage - Failed to send message, kicking client. Message was RpcReply(id=RpcRequestId(toLong=4982229886899153484), result=ErrorOr(value=null, error=org.hibernate.InstantiationException: No default constructor for entity: : com.legalcontract.schema.LegalContractSchemaV1$PersistentLegalContractState)) com.esotericsoftware.kryo.KryoException: Class org.hibernate.InstantiationException is not annotated or on the whitelist, so cannot be used in serialization Serialization trace: error (net.corda.core.ErrorOr) at net.corda.core.serialization.CordaClassResolver.checkClass(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:?] at 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:?]

最佳答案

kotlin-noarg 插件为已使用选定注释进行注释的类生成默认构造函数。

为带注解的@Entity申请Kotlin-jpa插件生成默认构造器。

将脚本添加到gradle文件中

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
    }
}

apply plugin: "kotlin-jpa"

关于kotlin - Corda: error=org.hibernate.InstantiationException: 没有实体的默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45475265/

相关文章:

corda - 在 Corda 中,如何从服务启动流程?

gradle - 使用 gradle 构建 cordapp 示例

gradle - 部署在Corda中出现问题的节点

android - Kotlin 中的 Retrofit 实现 - 方法默认参数

kotlin - 在Kotlin的字符串模板中的变量之后立即使用下划线("_")

android - 仅显示 5 个点指示器,供我需要隐藏的剩余 viewpager

android - 对 RecyclerView 的项目进行排序 - Kotlin 代码

java - 闲置数小时后打开应用程序时出现黑屏

java - 生成TransactionBuilder时出错: Parameter specified as non-null is null