معايير nhibernate للاستعلام عن كائنات الوالدين مع كائن طفل واحد على الأقل؟
-
05-07-2019 - |
سؤال
في مشروعي ، Lines
يمكن تجميعها و Group
لديه نوع يمكن أن يكون إما Crossing
(1) أو Parallel
(2). أحتاج إلى العثور على جميع الخطوط التي لديها مجموعة واحدة على الأقل من نوع محدد (في هذه الحالة ، 1). يمكن أن يكون معرف السطر المعطى إما على العمود LineA
أو LineB
من مجموعة. هنا حيث وصلت حتى الآن:
Criteria crit = session.CreateCriteria(typeof(Line), "ln");
DetachedCriteria count = DetachedCriteria.For<Group>()
.SetProjection(Projections.CountDistinct("Id"))
.Add(Expression.Or(
Expression.EqProperty("LineA", "ln.Id"),
Expression.EqProperty("LineB", "ln.Id")))
.Add(Expression.Eq("GroupTypeId", 1));
crit.Add(Subqueries.Gt(0, count));
المحلول
لقد عملت!
crit.Add(Expression.Sql(
"EXISTS(select 1 from Group" +
"WHERE ({alias}.Id=LineA OR {alias}.Id=LineB)"+
"AND GroupTypeId = ?)", (int) type, NHibernateUtil.Int32));
{alias}
هو عنصر نائب للكائن الذي يتم الاستعلام عنه.
لا تنتمي إلى StackOverflow