2009-11-15 2 views
7

Я следующий по имени SQL запросов определяется:NHibernate «Ошибки в именованных запросов»

<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;} 
} 
+1

Убедитесь, что у вас есть файл сопоставления для ItemSearchResult (т. Е.), Который вы определили ItemSearchResult.hbm.xml. Если этого нет, то nHibernate не будет знать, как сопоставить столбцы Select в свойствах. –

ответ

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> 

Я думаю, что проблема, которая существует в вашем коде, что вы конкретно не наметить столбцы и как они отображают к классу.

Примечание. Если есть какие-либо поля, которые не соответствуют XML-формату NHibernate, дайте мне знать через комментарии. У меня нет доступа к файлам сопоставления NHibernate прямо сейчас.

3

У вас есть правильный .hbm.xml для ItemSearchResult? Если вы используете ItemSearchResult в своем запросе, то для этого вам понадобится .hbm.xml. Также как сущности.

+1

Только что столкнулся с этой проблемой - там был файл, но это был ItemSearchResult.xml, NOT ItemSearchResult.hbm.xml. Долго смотрел. – jmoreno

+0

Это долгое время из этого ответа. Но вы можете попробовать добавить '.hbm', чтобы расширение было« .hbm.xml ». Это может помочь решить проблему. –

Смежные вопросы