【问题标题】:Nhibernate Could not Execute Query - Oracle Procedure returning refcursorNhibernate 无法执行查询 - Oracle 过程返回 refcursor
【发布时间】:2012-06-07 19:23:42
【问题描述】:

我的包包含以下过程-->

包体 myNewack 为 过程 DisplayEmployees(Emplist OUT refCursor) 是 开始 打开 Emplist 为 从员工中选择 EmpId、FirstName、LastName; 结尾; 结束 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:调用 MYNEWPACK.DISPLAYEMPLOYEES()]"

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

【问题讨论】:

    标签: nhibernate


    【解决方案1】:

    我猜您的 hbm 映射文件中缺少返回定义。
    应该是这样的:

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

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

    如果您想了解更多信息,可以阅读很好的article,这对我有很大帮助。

    更新:

    你可以混HBM and fluent mappings。

    【讨论】:

    • 嗨 LeftyX:但是我没有使用 Fluent NHibernate 类,所以有没有其他方法可以做到这一点,让我知道
    • @Tarak:我已经更新了我的答案。您可以混合使用 HBM 和流利的映射。如果我的回答对您来说足够好,您可以将其标记为“已接受”,甚至可以投票;-)
    猜你喜欢
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多