我在NHibernate的的.hbm.xml映射文件中映射的Oracle 11g存儲過程作爲命令一個Oracle 11g中,像這樣:NHibernate的3.3:<sql-insert>執行存儲過程
<class name="Person" table="PERSONS">
<id name="Id" column="COD_PERSON" />
<property name="Name" column="NAME" />
<property name="AuditField1" column="AUDITFIELD1" />
<property name="AuditField2" column="AUDITFIELD2" />
<property name="AuditField3" column="AUDITFIELD3" />
<sql-insert>exec PKG_PERSONS.insert_sp ?,?</sql-insert>
</class>
這是存儲過程:
create or replace package body PKG_PERSONS is
procedure insert_sp(pcod_person persons.cod_person%type,
pname persons.name%type) is
begin
insert into persons(cod_person, name) values(pcod_person, pname);
end;
從這個映射中,我期待'Id'和'Name'屬性將作爲參數發送,但是肯定的是,這沒有發生;我收到來自Oracle的這個錯誤:ORA-01036:非法變量名稱/編號。 NHibernate在控制檯窗口中顯示了一些日誌,好像NH試圖映射所有屬性(包括AuditFields)來調用存儲過程。
也許這就是源的錯誤?
這是預期的行爲?
是否可以具體送什麼性質與NH3/Oracle的參數?
在此先感謝。