Вот что у меня есть:
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.
как лучше решить мою проблему? заранее спасибо!
предпочтительными способами являются:
- вызов параметризованного запроса для запроса позиции из единицы.
- анализирует набор результатов комбинированного запроса, чтобы получить свойства Unit и Position