と の 2 つのクラスがある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
?