假设我有两个课程:Parent
和Child
. AParent
有一个属性Children
,它当然是Child
对象的集合。
Child
没有ParentId
财产。它确实有一个Parent
属性。
所以,我的 NHibernate 映射Child
包括:
<many-to-one name="Parent" class="Parent" column="ParentId" cascade="save-update" />
我的Parent
映射包括:
<bag name="children" access="field" inverse="true" cascade="all-delete-orphan">
<key column="ParentId" />
<one-to-many class="Child" />
</bag>
现在这就是我想做的事情:我想获得所有Child
具有特定ParentId
. 我知道我可以先获取Parent
然后返回它的Children
属性。但是如果我想Child
直接查询表呢?
如果它是一个映射属性(例如,Name
),我可以使用 NHibernate 的标准,但在这种情况下,ParentId
不是映射的。
我尝试使用类似的东西:
criteria.Add(Restrictions.Eq("Parent.Id", 1));
但这不起作用。我求助于使用 SQLCriterion(如此处所述),但一位朋友/同事让我认为必须有更好的方法。
有任何想法吗?有预测的东西和Restrictions.EqProperty
?