2017-09-04 27 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