これは私が持っているものです:
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>
UnitsとPositionsは別々のテーブルにありますが、どちらもUserGroupIdとRelatedDate (適切な名前付きクエリのパラメーター) によってフィルター処理されます。プロパティが複雑なため、テーブルに直接マップされません。
私がやろうとしているのは、フラグ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 のパラメーター化されたクエリを呼び出します。
- 複合クエリの結果セットを解析して、Unit プロパティと Position プロパティを取得する