именованный запрос nhibernate объединяет одну запись - PullRequest
2 голосов
/ 11 ноября 2011

Вот что у меня есть:

class Unit
{
   public Position ManagerPosition;
}

<sql-query name="GetUnits" read-only="true">
    <query-param name="UserGroupId" type="int"/>
    <query-param name="RelevantToDate" type="datetime"/>
    <query-param name="ParentUnitId" type="int"/>

    <return class="Unit" />
...
</sql-query>

<sql-query name="GetPositions" read-only="true">
    <query-param name="UserGroupId" type="int"/>
    <query-param name="RelevantToDate" type="datetime"/>
    <query-param name="UnitId" type="int"/>
    <query-param name="ManagersOnly" type="bool"/>

    <return class="Position" />
...
</sql-query>

Единицы и Позиции находятся в отдельных таблицах, но оба фильтруются по UserGroupId и RelevantDate (параметры соответствующих именованных запросов ). они не отображаются в таблицы напрямую из-за сложности их свойств.

Я пытаюсь получить список единиц с одной позицией , для которой установлен флаг IsManager , установленный в True .

Я пытался сделать это с помощью return-join - безуспешно. Я пытался сделать это

<return class="Unit">
  <return-property name="ManagerialPosition" column="position"/>
</return>

и

<return alias="position" class="Position">

но NHibernate сказал, что не может привести массив System.Object к массиву Unit.

как лучше решить мою проблему? заранее спасибо!

предпочтительными способами являются:

  1. вызов параметризованного запроса для запроса позиции из единицы.
  2. анализирует набор результатов комбинированного запроса, чтобы получить свойства Unit и Position
...