我有一个包含相关对象列表的类。
我将其映射如下:
<class name="MyDto" table="`MyView`" mutable="false" lazy="false">
<id name="Id" column="ID" type="int">
<generator class="assigned" />
</id>
<set name="Days" cascade="all-delete-orphan" lazy="false" >
<key column="Id" />
<one-to-many class="MyAssociatedObj"/>
</set>
</class>
<class name="MyAssociatedObj" table="V_SC_NEED" mutable="false" lazy="false" >
<id name="Id" column="`ID2`" type="int">
<generator class="assigned" />
</id>
<property type="DateTime" not-null="true" name="DayDate" column="`Date`" />
<component name="Audit">
<property type="string" not-null="true" length="255" name="Username" column="`USERNAME`" />
<property type="decimal" not-null="true" name="PreviousValue" column="`PrevVal`" />
</component>
</class>
我想要做的是获得一个 MyDto 对象列表,由我的关联对象 MyAssociatedObject 过滤。
这意味着,例如,如果我这样做:
UnitOfWork.Session.CreateCriteria<MyDto>().List<MyDto>()
我得到一个 42 行的列表。现在,我想通过我的关联对象过滤它们,并限制它们之间。问题是当我这样做时:
UnitOfWork.Session.CreateCriteria<MyDto>().CreateAlias("Days", "days").Add(Restrictions.Between("days.DayDate", query.FromDate, query.ToDate));
我得到了,不知何故684行!(一些笛卡尔积或其他东西)。
有什么建议吗?非常感谢 !