hbm中的NHibernate <sql-query> - 无法执行查询</sql-query>

时间:2014-12-17 15:29:36

标签: nhibernate nhibernate-mapping

我有一个HBM文件,我想放置并执行原始sql查询。这就是我放在我的hbm文件中的内容:

  <sql-query name="SqlSrcMyStuff" callable="true" >
    <return-scalar column="RU_ID" type="System.Int32" />
    <![CDATA[ 
          select some_id
          from some_table
          where param1 = ? and param2 = ?
    ]]>
  </sql-query>

这是我的代码:

IList listOfRules = objMyDAO.GetByNamedQuery("SqlSrcMyStuff", arrParams);

但我收到异常&#34;无法执行查询&#34;。但当我接受查询时,它会在异常中显示并替换参数并对我的数据库运行 - 查询执行正常。

如何让它运行我的原始SQL查询?

1 个答案:

答案 0 :(得分:1)

HBM应该是

<sql-query name="SqlSrcMyStuff" callable="true" >
    <return-scalar column="RU_ID" type="System.Int32" />
    <![CDATA[ 
          select some_col  AS RU_ID
          from some_table
          where somecol1 = :param1 and somecol2 = :param2
    ]]>
</sql-query>

和查询

var result = session.GetNamedQuery("SqlSrcMyStuff")
        .SetInt32("param1", 1)
        .SetInt32("param2", 1)
        .UniqueResult<int>();  

这里的结果应该只是一个int,而不是IList ......因为这就是我们所说的(标量为返回) Als检查类似的Q&A