2012-05-29 25 views
0

我的包包含以下程序 - >NHibernate的无法执行查询 - Oracle过程返回REFCURSOR

包体myNewack作为 程序DisplayEmployees(Emplist OUT REFCURSOR) 是 开始 开放Emplist为 选择EMPID,名字,姓氏来自员工; 结束; end myNewPack;

我HBM映射文件包含以下命名查询 - >

<sql-query name="mytestsp" callable="true"> 
call MYNEWPACK.DISPLAYEMPLOYEES() 
</sql-query> 

和.NET我使用下面的代码每当我执行调用这个程序

public IList<NhbHelper.Employee> GetEmployees() 
{ 
    IList<NhbHelper.Employee> myList; 
    ISession session = NHibernateHelper.GetCurrentSession(); 
    var query= session.GetNamedQuery("mytestsp"); 
    return query.List<NhbHelper.Employee>(); 
} 

此代码我得到错误 “无法执行查询 [调用MYNEWPACK.DISPLAYEMPLOYEES()] [SQL:call MYNEWPACK.DISPLAYEMPLOYEES()]”

请帮助我解决这个问题,我如何执行返回refcursor的oracle程序

回答

0

我想你在hbm映射文件中缺少返回定义。
它应该是这样的:

<sql-query name="mytestsp" callable="true"> 
    <return class="NhbHelper.Employee, NhbHelper" /> 
    call MYNEWPACK.DISPLAYEMPLOYEES() 
</sql-query> 

我有同样的问题,几个月前挣扎。我正在使用PACKAGES,我想出了这个solution

如果您想了解更多,你可以读好article这对我帮助很大。

UPDATE:

你可以混合HBM and fluent mappings

+0

LeftyX你好:但是我没有使用功能NHibernate类,所以有没有这样做的任何其他方式,让我知道 – Tarak

+0

@Tarak:我已经更新了我的答案。您可以混合使用HBM和流畅的映射。如果我的答案对你来说足够好,你可以将它标记为“未答复”,甚至可以投票;-) – LeftyX

相关问题