这就是我所拥有的:
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 设置为真
我试图通过return-join来做到这一点 - 没有成功。 我试过这样做
<return class="Unit">
<return-property name="ManagerialPosition" column="position"/>
</return>
和
<return alias="position" class="Position">
但NHibernate表示它无法将System.Object数组强制转换为Unit数组。
有什么方法可以解决我的问题?提前谢谢!
更好的方法是: