對SQL Server和Oracle DB使用NHibernate 3.1,我們需要存儲一個長度超過4000個字符的文本字符串。文本實際上是XML,但這並不重要 - 我們只是想將其作爲原始文本來處理。使用SQL Server,這很容易。我們聲明列NVARCHAR(MAX)正是如此它映射:在Oracle和NHibernate中映射長文本字符串
<property name="MyLongTextValue" length="100000"/>
使用length屬性告訴NHibernate的期望,可能會超過4000個字符的字符串。
對於我的生活,我無法弄清楚如何在Oracle 11g上進行這項工作。我試過將這個列聲明爲XMLTYPE和LONG,但都沒有成功。在第一種情況下,我們以結束ORA-01461:只有在試圖插入行時才能將LONG值綁定到插入到LONG列中。在第二種情況下,數據插入正確,但在查詢時返回爲空字符串。
有誰知道如何使這項工作?答案必須與SQL Server和Oracle兼容。我寧願不必編寫自定義擴展,如用戶類型和驅動程序子類。謝謝。
您應該使用NTEXT對於SQL Server,NVARCHAR(MAX)將可能不能處理超過4000個字符。 –
@YavorShahpasov你爲什麼會認爲NVARCHAR(MAX)不能處理超過4000個字符?文檔中說「max」表示最大存儲大小爲2^31-1字節(2 GB)。「這應該足夠1073741823字符左右。 – phoog
我被一個事實誤導了,它允許1-4000個字符。你是正確的,max將允許高達2GB。 –