1

NHibernate のサブクエリの値に基づいて、外部クエリの結果を制限する方法を知りたいです。

SQL は次のようになります。

SELECT
    p.*
FROM
    ParentTable p
WHERE
    (SELECT COUNT(c.Id) FROM ChildTable c WHERE c.ParentId = p.Id) > n

私はこれまでのところ持っています:

Parent parentAlias = null;
Child childAlias = null;
var query = Session.QueryOver(() => parentAlias);
var subquery = Session.QueryOver(() => childAlias).Where(childAlias.Parent.Id == parentAlias.Id);
query.WithSubquery...

しかし、明らかな何かが欠けていない限り、これ以上先に進むことはできませんか?

4

2 に答える 2

2

私はそれを解決しました。疑似例を次に示します。

outerQuery.WithSubquery.WhereValue(int).Lt(subquery);

SQL のように実行されます

SELECT
  *
FROM
  OuterTable
WHERE 1 < (SELECT COUNT(*) FROM InnerTable WHERE ...)
于 2013-07-02T14:48:09.393 に答える
1
Parent parentAlias = null;
var subquery = QueryOver.Of<Child>().Where(child.Parent.Id == parentAlias.Id);
var query = session.QueryOver(() => parentAlias)
    .WithSubquery.WhereExists(subquery)
    .List();
于 2013-06-06T08:03:42.240 に答える