2

这就是我所拥有的:

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>

UnitsPositions位于单独的表中,但都由UserGroupIdRelevantDate(相应命名查询的参数)过滤。由于属性的复杂性,它们没有直接映射到表。

我要做的是获取具有单个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 数组。

有什么更好的方法来解决我的问题?提前致谢!

优选的方法是:

  1. 从 Unit 查询中调用 Position 的参数化查询。
  2. 解析组合查询的结果集以获取 Unit 和 Position 属性
4

0 回答 0