Oracle NVARCHAR2(Max)使用nhibernate 2.1

时间:2012-03-23 07:22:42

标签: oracle nhibernate

这是我的问题:我有Oracle数据库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)
)

我的获取数据的功能正常。但我需要一个字符串长度为&gt;的表。 4000没有Oracle.DataAccess.Client.OracleException:ORA-00932:不一致的数据类型:expected - 得到NCLOB

1 个答案:

答案 0 :(得分:1)

你试过这个吗?

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

我正在使用SQL Server,在这种情况下我不需要指定类型。