2012-03-23 67 views
2

這裏是我的問題:我有Oracle數據庫10g,我使用nhibernete 2.1進行映射。現在,當我在Oracle中創建一個表我的表的hbm.xml文件中是這樣使用nhibernate的Oracle NVARCHAR2(Max)2.1

<?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

+3

在Oracle中,您無法定義超過4000個字節的(N)VARCHAR列。您必須使用CLOB或NCLOB才能獲得更大的值。請向我們展示訪問該列的「* own function *」的代碼。 – 2012-03-23 07:55:22

回答

1

你試過這個嗎?

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

我使用的是SQL Server和我不需要在這種情況下,指定一個類型。