Отображение длинной текстовой строки в Oracle и NHibernate

Используя NHibernate 3.1 как с SQL Server, так и с базами данных Oracle, нам необходимо сохранить текстовую строку длиной более 4000 символов. Текст на самом деле является XML, но это не важно - мы просто хотим рассматривать его как необработанный текст. С SQL Server это просто. Мы объявляем столбец как NVARCHAR (MAX) и сопоставляем его следующим образом:

<property name="MyLongTextValue" length="100000"/>

Использование свойства length указывает NHibernate ожидать, что строка может быть длиннее 4000 символов.

На всю жизнь я не могу понять как заставить это работать на Oracle 11g. Я безуспешно пытался объявить столбец как XMLTYPE и LONG. В первом случае мы получаем ORA-01461: можно привязать значение LONG только для вставки в столбец LONG при попытке вставить строку. Во втором случае данные вставлены правильно, но при запросе возвращаются в виде пустой строки.

Кто-нибудь знает, как это сделать? Ответ должен быть совместим как с SQL Server, так и с Oracle. Я бы предпочел не писать собственные расширения, такие как типы пользователей и подклассы драйверов. Спасибо.

5
задан brianberns 15 August 2011 в 22:02
поделиться