我有一个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查询?
答案 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