2013-04-09 150 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