SqlException-列的值太长(Corda)

SqlException-列的值太长(Corda),corda,Corda,在流执行期间获取上述异常(状态持久性)。我的合同状态包含一个ByteArray类型的字段,赋值为一个14kb长的XML文件。我怀疑这样的异常可能会发生在大型数据字段成员中……因此,我是否遇到了Corda的设计约束,或者我是否应该使用另一种类型(例如Blob/Clob?),如果是这样的话,解决方案是否只是在模式中定义Blob/Clob类型的成员,或者我是否应该采取另一种方法?谢谢。目前,Corda使用H2数据库。尝试改用Clob数据类型(明确建议XML:) 将来,Corda将不会绑定到H2,根据所

在流执行期间获取上述异常(状态持久性)。我的合同状态包含一个ByteArray类型的字段,赋值为一个14kb长的XML文件。我怀疑这样的异常可能会发生在大型数据字段成员中……因此,我是否遇到了Corda的设计约束,或者我是否应该使用另一种类型(例如Blob/Clob?),如果是这样的话,解决方案是否只是在模式中定义Blob/Clob类型的成员,或者我是否应该采取另一种方法?谢谢。

目前,Corda使用H2数据库。尝试改用Clob数据类型(明确建议XML:)


将来,Corda将不会绑定到H2,根据所使用的数据库,将应用不同的规则。

是的,我看到了该文档……但看起来我需要访问连接对象才能创建clob/blob。因此,我提出了问题,因为它认为,为了做到这一点,将在H2/Kyro级别进行大量修改,并可能产生Corda序列化的后果。这是一个准确的观察结果吗?那么,我的结论是否正确?对于在Corda中将长度超过255字节的数据持久化为事务状态,没有“开箱即用”的支持?您不需要连接对象,只需在自定义合同状态类中定义类型即可。您可以在合同状态中为给定的数据库提供程序定义任何有效的数据类型和长度(例如,在H2中,您可以使用最大大小为2Gb的BLOB)。看见在内部,到数据库提供程序的数据类型映射是由Hibernate而不是Corda处理的。是的,我实际上就是这么做的。我指的是在运行时实例化一个BLOB对象以分配到自定义契约状态。无论如何,我已经决定使用附件,所以没有追求更多的tbh;从合同数据状态引用附件的关联SecureHash。似乎工作得很好,我假设有一个更好的方法,因为所引用的数据本质上并不是状态的一个独特方面。除非有我看不到的潜在问题?