2017-09-04 26 views
1

流執行(狀態持久性)期間變得異常的上方。我的合同狀態包含一個類型爲ByteArray的字段,分配的值是一個長度爲14kb的XML文件。我懷疑這樣的,因爲這可能會與很多數據字段成員發生......所以有我跑進琴絃的設計約束或我應該使用另一種類型(例如斑點/的Clob?),如果是的話是解決僅僅是一個例外在模式中定義Blob/Clob類型的成員還是應該採用另一種方法?謝謝。SQLEXCEPTION - 值太長柱(琴絃)

回答

1

目前,琴絃使用一個H2數據庫。嘗試使用Clob數據類型(它明確推薦使用XML:http://www.h2database.com/html/datatypes.html#clob_type)。

在未來,琴絃不會被捆綁到H2,和不同的規則將適用取決於所使用的數據庫。

+0

是的,我看到的文件...但它看起來像我需要訪問連接對象,以創建一個CLOB/BLOB。因此,我的問題,因爲它認爲爲了做到這一點,將在H2/Kyro水平上進行相當大的修改,可能會導致Corda系列化。這是一個準確的觀察?我是否正確,然後得出結論:對於長度超過255字節的數據在Corda中保存爲* transaction state *沒有「開箱即用」支持? – Toadfather

+0

您不需要連接對象,只需在自定義合同狀態類中定義您的類型即可。 您可以在合同狀態(例如H2中可以使用最大尺寸爲2Gb的BLOB)中爲給定的數據庫提供者定義任何有效的數據類型和長度。請參閱http://www.h2database.com/html/datatypes.html。 內部數據類型映射到數據庫提供商通過休眠,不琴絃處理。 –

+0

是的,這就是我的實際情況......我指的是在運行時實例化一個BLOB對象以分配到自定義合同狀態。無論如何,我決定使用附件,所以沒有進一步追求tbh;從合同數據狀態引用附件的關聯SecureHash。似乎運作良好,並且我假設一個更好的方法,因爲所提到的數據本質上不是國家的一個獨特方面。除非有一個潛在的問題,我沒有看到? – Toadfather