2017-09-04 10 views
1

私の契約状態にはByteArray型のフィールドがあり、割り当てられた値は14KBのXMLファイルです。私は大規模なデータフィールドメンバで発生する可能性があるなどの例外があると思われます... Cordaの設計制約に遭遇しましたか、別の型(Blob/Clobなど)を使用する必要がありますか?スキーマ内でBlob/Clob型のメンバーを定義するか、別のアプローチをとるべきでしょうか?ありがとう。SqlException - カラム(Corda)の値が長すぎると、フロー実行中に例外を超過する(状態永続性)

答えて

1

現在、CordaはH2データベースを使用しています。代わりにClobデータ型を使用してみてください(XMLの場合は明示的に推奨されています:http://www.h2database.com/html/datatypes.html#clob_type)。

今後、CordaはH2に縛られず、使用されるデータベースによって異なる規則が適用されます。

+0

ええ、私はそのドキュメントを見ました...しかし、私はclob/blobを作成するために接続オブジェクトにアクセスする必要があるように見えます。したがって、これを行うには、H2/Kyroレベルでかなりの修正を加え、Cordaのシリアライゼーションに至る可能性があると感じているので、私の質問です。これは正確な観測だろうか? Cordaの*トランザクション状態*として255バイト以上のデータを永続化するためのサポートはありませんか? – Toadfather

+0

接続オブジェクトは必要ありません。カスタムコントラクトステートクラスで型を定義するだけです。 契約状態内の任意のデータベースプロバイダに対して、有効なデータ型と長さを定義できます(たとえば、H2では最大サイズ2GbのBLOBを使用できます)。 http://www.h2database.com/html/datatypes.htmlを参照してください。 データベースプロバイダへの内部的なデータ型マッピングは、CordaではなくHibernateによって処理されます。 –

+0

はい、それは私が実際に行ったことです。私は、実行時にカスタムコントラクト状態に割り当てるためのBLOBオブジェクトのインスタンス化を指していました。とにかく、私は添付ファイルを使用することにしました。添付ファイルの関連するSecureHashを契約データ状態から参照します。言いたいデータが本質的に国家のユニークな側面ではないので、うまくいくと思います。私が見ていない潜在的な問題がない限り? – Toadfather

関連する問題