2017-08-03 8 views
1

問題が発生しましたので、助けてください。コードはM13に基づいています。私のスキーマコードこれは主にあなたのサンプルを参照するスキーマを定義するために使用されます。Corda:error = org.hibernate.InstantiationException:エンティティのデフォルトのコンストラクタがありません

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) 
    } 

コルダノード・エラー・ログ。 E 12時53分45秒[RPC-サーバー・ハンドラ・プール-0] vault.HibernateVaultQueryImpl._queryBy - org.hibernate.InstantiationException: エンティティにはデフォルトコンストラクタ: com.legalcontract.schema.LegalContractSchemaV1 $ PersistentLegalContractState E 12:53:45 [rpc-server-handler-pool-0] messaging.Observablecontext.sendMessage - メッセージを送信できませんでした。 キッククライアント。メッセージは(toLongが4982229886899153484を=) RpcReply(ID = RpcRequestIdた、 結果= ErrorOr(値= nullで、エラー= org.hibernate.InstantiationException: エンティティにはデフォルトコンストラクタ: com.legalcontract.schema.LegalContractSchemaV1 $ PersistentLegalContractState) ) com.esotericsoftware.kryo.KryoException:クラスorg.hibernate.InstantiationExceptionが注釈を付けていないか、または ホワイトリストに、そのシリアライズ シリアル化トレースで使用することはできません。ネットで エラー(net.corda.core.ErrorOr) 。 code.core.serialization.CordaClassResolver.checkClass(CordaClassResolver.kt:65) 〜[corda-core-0.13.0.jar :?] at net.corda.core.serialization.CordaClassResolver.getRegistratイオン(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は:?]

答えて

1

あなたはPersistentLegalContractStateの体にデフォルトコンストラクタを追加する必要があります。ような何か:

constructor() : this("", "", "", "") 
+0

あなたは助けるためにTHX、この問題は修正されました。 – Hart

0

kotlin-noargプラグインは、選択した注釈で注釈されたクラスのデフォルトconstrutorsを生成します。

アノテーション付き@EntityのKotlin-jpaプラグインを適用して、デフォルトのコンストラクタを生成します。またkotlin-JPAのプラグインをインストールした後、:

は、私は同じエラー(エンティティにはデフォルトコンストラクタorg.hibernate.InstantiationException)を持っていたファイル

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

apply plugin: "kotlin-jpa" 
1

をGradleのためのスクリプトを追加します。

ソリューションは、私のカスタムスキーマNULL可能で、すべての私のフィールド、例えばを作ることだった。:

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? = null, 

     @Column(name = "sender_name") 
     var senderName: String? = null, 

     @Column(name = "recipient_name") 
     var recipientName: String? = null, 

     @Column(name = "status") 
     var status: String? = null) : PersistentState() 
関連する問題