HQLBasedQuery для ProjectionQuery Castle ActiveRecord / NHibernate - PullRequest
0 голосов
/ 25 февраля 2010

Я пытаюсь выполнить запрос с использованием Castle и вернуть массив со строгим типом или IList для последующего использования в привязке данных, поэтому из прочитанного ProjectionQuery будет моим лучшим выбором, но как мне преобразовать это в проекционный запрос:

        HqlBasedQuery hql = new HqlBasedQuery(typeof(TrackingRule), 
                                          QueryLanguage.Hql,
                                          "SELECT AC.TrackingRule FROM Account_Rule as AC WHERE AC.Account.ID = " + 63);

Заранее спасибо

Йехия А. Салам

1 Ответ

0 голосов
/ 25 февраля 2010

Похоже, вы просто пытаетесь вернуть список объектов. Проекционные запросы обычно используются для возврата только некоторых столбцов, что, по-видимому, не то, что вам нужно.

Вы можете получить строго типизированный ArrayList с тем, что у вас есть:

HqlBasedQuery hql =
  new HqlBasedQuery(typeof(TrackingRule), QueryLanguage.Hql,
        "SELECT AR.TrackingRule FROM Account_Rule as AR WHERE AR.Account.ID = "
           + 63);
ArrayList resultsList = (ArrayList) ActiveRecordMediator.ExecuteQuery(hql);

Вот альтернатива, которая возвращает массив:

SimpleQuery<TrackingRule> sq =
  new SimpleQuery<TrackingRule>(
        "SELECT AR.TrackingRule FROM Account_Rule as AR WHERE AR.Account.ID = "
           + 63);
TrackingRule [] arrayOfTrackingRules =
  (TrackingRule []) ActiveRecordMediator.ExecuteQuery(sq);
...