这就是我所拥有的:
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和RelevantDate(相应命名查询的参数)过滤。由于属性的复杂性,它们没有直接映射到表。
我要做的是获取具有单个Position的Units列表,其标志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 属性