我将 Oracle 11g 存储过程映射为 NHibernate 的 .hbm.xml 映射文件中的命令,如下所示:
<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: invalid variable name/number。NHibernate 在控制台窗口中显示了一些日志,似乎 NH 尝试映射所有属性,包括 AuditFields,以调用存储过程。
也许这是消息来源的错误?
这是预期的行为吗?
是否可以使用 NH3/Oracle 指定哪些属性作为参数发送?
提前致谢。