NHibernate“命名查询中的错误”

NHibernate“命名查询中的错误”,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我已定义以下命名SQL查询: <sql-query name="ItemSearch"> <return class="ItemSearchResult"> <return-property name="Item" column="ItemId" /> <return-property name="Distance" column="Distance" /> </return> S

我已定义以下命名SQL查询:

<sql-query name="ItemSearch">
    <return class="ItemSearchResult">
        <return-property name="Item" column="ItemId" />
        <return-property name="Distance" column="Distance" />
    </return>
    SELECT
        Items.*,
        dbo.DistanceBetween(Latitude, Longitude, :lat, :long) AS Distance
    FROM Items
    WHERE Contains(Name, :keywords)
    ORDER BY Distance ASC
</sql-query>

以下是我的代码示例: NHibernate版本和我的Hibernate版本之间唯一不同的是自动导入,我假设是包

<hibernate-mapping auto-import="true" package="PackageName">
  <class name="Name of class to maptop">
    <composite-id>
      <key-property name="<name of parameter>" type="TYPE"/>
    </composite-id>
    <property name="COLUMNNAME" type="TYPE"/>
  </class>
  <sql-query name="queryName">
        <return alias="dr" class="Name of class to map to"/>
select columnName as {dr.nameofColumn}, 
   from table
 </sql-query>
</hibernate-mapping>
我认为代码中存在的问题是您没有明确地映射列以及它们如何映射到类


注意:如果有任何字段不符合NHibernate XML格式,请通过注释告知我。我现在没有访问我的NHibernate映射文件的权限。

您是否有用于ItemSearchResult的正确的.hbm.xml?如果在查询中使用ItemSearchResult,则需要有一个.hbm.xml。就像实体一样。

确保您有ItemSearchResult的映射文件,即您已经定义了ItemSearchResult.hbm.xml。如果不存在,nHibernate将不知道如何将所选列映射到属性。刚刚遇到此问题-文件在那里,但它是ItemSearchResult.xml,而不是ItemSearchResult.hbm.xml。我花了很长时间才明白,从这个答案开始已经很久了。但是您可以尝试add.hbm,因此扩展名为.hbm.xml。这可能有助于解决问题。
<hibernate-mapping auto-import="true" package="PackageName">
  <class name="Name of class to maptop">
    <composite-id>
      <key-property name="<name of parameter>" type="TYPE"/>
    </composite-id>
    <property name="COLUMNNAME" type="TYPE"/>
  </class>
  <sql-query name="queryName">
        <return alias="dr" class="Name of class to map to"/>
select columnName as {dr.nameofColumn}, 
   from table
 </sql-query>
</hibernate-mapping>