Nhibernate命名SQL查询

uvero 发布于 4 天前 nhibernate 最后更新 4 天前 0 浏览

任何机构都可以告诉我下面使用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,但每次遇到同样的错误。
已邀请:

wodio

赞同来自:

如果你在rdbms sql执行器中“按原样”放置SQL,它会运行吗? 除了封闭的CDATA元素后面的奇怪的-->,我注意到你没有在查询中声明I别名。 我的意思是,这些列前面有I ...

SELECT I.TotalNetSales,I.CostOfGoodsSold,I.GrossProfit
......来自哪里?

aet

赞同来自:

请检查.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();