昨日の朝からこのクエリと戦っていて、解決策が見つかりません。私がやりたいのは、次のようなクエリを作成することです。
IList<Parent> = _session.QueryOver<Parent>()
.Where(Restrictions.lt(x => x.Childs.Count,4))
.List<Parent>();
それを行う方法を知っている人はいますか?Childs は HasMany コレクションです。
よろしく、マーティン
昨日の朝からこのクエリと戦っていて、解決策が見つかりません。私がやりたいのは、次のようなクエリを作成することです。
IList<Parent> = _session.QueryOver<Parent>()
.Where(Restrictions.lt(x => x.Childs.Count,4))
.List<Parent>();
それを行う方法を知っている人はいますか?Childs は HasMany コレクションです。
よろしく、マーティン
サブクエリを使用してこれを行う方法の 1 つを次に示します。
Parent parentAlias = null;
IList<Parent> = _session.QueryOver<Parent>(() => parentAlias)
.WithSubquery.WhereValue(4).Gt(
QueryOver.Of<Child>()
.Where(ch => ch.Parent.Id == parentAlias.Id)
.Select(Projections.Count<Child>(ch => ch.Id)
)
.List<Parent>();
次のようなものが生成されます。
SELECT this_.Id
/* select list continues */
FROM [Parent] this_
WHERE 4 /* @p0 */ > (SELECT count(this_0_.Id) as y0_
FROM [Child] this_0_
WHERE this_0_.ParentId = this_.Id)