Oracle NVARCHAR2 (Max) с использованием nhibernate 2.1 - PullRequest
2 голосов
/ 23 марта 2012

Вот моя проблема: у меня Oracle Database 10g, и я использую nhibernete 2.1 для отображения. Теперь, когда я создаю таблицу в Oracle, файл hbm.xml моей таблицы выглядит так:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="AssembleName" namespace="NamesapceName" >
<class name="ClassName" table="TableName" schema="ScheamName"
     dynamic-update="true"  dynamic-insert="true"  select-before-update="true">
<id name="Id" column="id" type="integer" unsaved-value="0">
  <generator class="native"></generator>
</id>
<property name="Name" column="name" type="StringClob" length="100000" not-null="true" />
  </class>

и если я укажу длину свойства, превышающую 4000, оно будет создано в этом формате

create table TableName (
    id NUMBER(10,0) not null,
   name NCLOB not null, 
   primary key (id)
)

и когда я выбираю элемент таблицы, используя мою собственную функцию
Я сталкиваюсь с Oracle.DataAccess.Client.OracleException: ORA-00932: несовместимые типы данных: ожидается - получена проблема NCLOB Но когда я устанавливаю свойство как

<property name="Name" column="name" type="string" length="2000" not-null="true" />

создано в этом формате

create table TableName (
    id NUMBER(10,0) not null,
   name NVARCHAR(2000) not null, 
   primary key (id)
)

и моя функция для извлечения данных работала нормально. Но мне нужна таблица с длиной строки> 4000 без Oracle.DataAccess.Client.OracleException: ORA-00932: несовместимые типы данных: ожидается - получено NCLOB

1 Ответ

1 голос
/ 23 марта 2012

Вы пробовали именно это?

<property name="Name" length="10000" not-null="true" />

Я использую SQL Server, и мне не нужно указывать тип в таком случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...