2009-10-15 4 views
1

Я исхожу из стороны Java, использующей Hibernate, и я просто не нашел подходящего места для ввода именованного запроса в NHibernate.nhibernate named query, имя не найдено

с помощью Visual Studio 2008, C# 2008

У меня есть запрос

<query name="SchwabAccountList"> 
    from DB_Accounts a 
    where a.AdminOffCode = 'SWB' 
</query> 

, и я хочу, чтобы положить его в .hbm.xml для таблицы счета (DB_Accounts)

Я положил его на конец файла, но в пределах <class> тег

<query name="AccountList"> 
     from DB_Accounts a 
     where a.AdminOffCode = 'SWB' 
    </query> 
    </class> 
</hibernate-mapping> 

код я использую, я попробовал несколько различных способов, но получить

Named query not known: AccountList

или что-то другое имя, которое я пытался использовать (assembly.dir.dir.class.queryname) такого рода вещи.

Код доступа выглядит.

   ISessionFactory factory = cfg.BuildSessionFactory(); 
       ISession session = factory.OpenSession(); 

       IList<DB_Accounts> accountList = 
        (IList<DB_Accounts>)(session.GetNamedQuery("AccountList").List()); 

       foreach (BDM_Controller.Source.ORM.DB_Accounts acctRec in accountList) 
       { 
         ... 

Что мне не хватает?

ответ

5

Я переместил запрос за пределами тега и получил его для распознавания запроса. Раньше у меня было это в верхней части файла сопоставления, и он жаловался на следующий тег. Возможно, это была проблема с одной цитатой. Я добавил обертку CDATA для защиты от этих проблем. Поэтому комбинация двух изменений, вероятно, решила проблему.

теперь у меня есть:

</class> 
    <query name="AccountList" cacheable="true" read-only="true"> 
    <![CDATA[ 
     from DB_Accounts a 
     where a.AdminOffCode = 'SWB' 
     ]]> 
    </query> 
</hibernate-mapping> 

и это работает

3

Кроме того, убедитесь, что ваш файл отображения Сложение Действие устанавливается как «Внедренный ресурс», или вы получите ту же ошибку, даже если сам файл сопоставления является правильным.

0

Также убедитесь, что файл hbm добавлен с расширением .hbm.xml, а не только .xml. Это также приведет к той же ошибке.

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