我定义了以下命名的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>
每当我尝试运行我的应用程序时,都会收到一般错误“命名查询中的错误:{ItemSearch}”。这里有什么明显的错误吗?
ItemSearchResult类是一个非常简单的包装类,如下所示:
public class ItemSearchResult
{
public Item Item {get; set;}
public double Distance {get; set;}
}
答案 0 :(得分:3)
.hbm.xml
的{{1}}是否正确?如果您在查询中使用ItemSearchResult
,那么您需要ItemSearchResult
。就像实体一样。
答案 1 :(得分:1)
以下是我的代码中的示例: 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映射文件。