2013-04-09 149 views
4

我在映射我们的byte[]字段时遇到问题。我一直在寻找几种解决方案,但目前为止没有任何工作。我得到的是这样的例外:HBM映射图/二进制

The length of the byte[] value exceeds the length configured in the mapping/parameter. 

下面是我到目前为止已经在hbm.xml

<property name="Data" type="BinaryBlob"> 
    <column name="attachmentData" sql-type="varbinary(max)"/> 
</property> 

我做得不对这里得到了什么?

更新 - 解决方案:

原来,我错误地做到了。我们通过存储过程插入byte[],所以属性映射与它无关。相反,我们需要告诉NHibernate的存储过程的参数的类型,像这样:

query.SetParameter(param.Key, param.Value, NHibernateUtil.BinaryBlob); 
+1

请将解决方案作为答案添加,并将其选为正确答案,这样您将问题标记为**已解决**;) – brasofilo 2013-04-14 19:58:53

回答

4

NHibernate的不理解VARBINARY(max)和将使用8000个字节的默认值。

因此您需要提供该号码。即

VARBINARY(2147483647)

我觉得用来工作,但是regression错误。

+0

不,它不起作用。我仍然得到相同的例外与文件> 8KB – hylde 2013-04-09 20:57:51

+0

感谢Rippo为您的答案,我想这将起作用,但我已纠正自己的职位。我有一个不同的情况,那就是我做错了什么:) – hylde 2013-04-10 02:30:27