私は接続している旧式のOracle(10.2g)データベースを持っています.Hibernate(2.0.1)を使用してストアドプロシージャからオブジェクトを戻したいと思います。問題のストアドプロシージャは、SYS_REFCURSORを使用して結果を返します。 documentationによれば、これは実行可能なはずですが、私はそうでなければ示唆するインターネット上でfewpostsを見つけました。OracleストアドプロシージャSYS_REFCURSORとNHibernate
マッピングファイル:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="OracleStoredProcedures" namespace="OracleStoredProcedures">
<class name="Person" mutable="false">
<id name="PersonCode" type="AnsiString" column="PERSONCODE">
<generator class="assigned" />
</id>
<property name="Name" type="String" column="PERSON_NAME" />
<property name="Surname" type="String" column="PERSON_SURNAME" />
</class>
<sql-query name="getpeople">
<return class="Person" />
EXEC RS_DB.GETPERSONTEST
</sql-query>
</hibernate-mapping>
ストアドプロシージャ:
CREATE OR REPLACE PROCEDURE RS_DB.GETPERSONTEST (
io_cursor IN OUT sys_refcursor
)
IS
BEGIN
OPEN io_cursor FOR
SELECT PERSONCODE, PERSON_NAME, PERSON_SURNAME
FROM PEOPLE
END GETPERSONTEST;
さて、ついに私たちのコードでこれを見て回った。私は回避策を書いていたが、それほど言わなかったのはクルージュだった。私たちはNHibernate 3.0にアップグレードして、提供されたリンク({calls employForForRegion(:regionCode)})で構文を使用しました。遅い答えをありがとう:)。 –