Nhibernate命名SQL查询

时间:2013-05-16 10:17:09

标签: nhibernate named-query

任何正文都可以使用 NHibernate 告诉我下面的查询命名SQL查询有什么问题。 因为我收到错误 - “命名查询错误:GetSecondReviewIncomeStatements”:

 <sql-query name="GetSecondReviewIncomeStatements" read-only="true">
 <![CDATA[
  SELECT I.TotalNetSales,I.CostOfGoodsSold,I.GrossProfit
  FROM IncomeStatement as incomeStatement
  INNER JOIN FETCH CompSearchResultItem as resultItem
  ON incomeStatement.Comparable.ID = resultItem.Comparable.ID
  AND resultItem.CompSearch.ID = :compSearchID     
  ]]>-->
 </sql-query>-->

我在网上搜索了很多内容,有人说OnWhere。 我也只尝试了NamedQuery但每次我都遇到同样的错误。

2 个答案:

答案 0 :(得分:0)

请检查 .hbm.xml 文件中的命名查询格式。

hbm.xml中的

     <sql-query name="ShowProducts">
        <return alias="Product" class="Product" />
        exec ShowProducts
      </sql-query>

<sql-query name="DeleteProducts">
    <query-param name="Id" type="int"></query-param>

    exec DeleteProducts @ID=:Id
  </sql-query>
代码使用

 IQuery query = (IQuery)session.GetNamedQuery("ShowProducts");


        var listProducts = query.List<Product>();

        GridView1.DataSource = listProducts;
        GridView1.DataBind();

答案 1 :(得分:0)

如果你在rdbms sql执行器中“按原样”放置SQL,你的SQL会运行吗?

除了封闭的-->元素之后的奇怪CDATA,我注意到您没有在查询中声明I别名。

我的意思是,这些列前面有I ...

SELECT I.TotalNetSales,I.CostOfGoodsSold,I.GrossProfit

......来自哪里?