在我的项目中,Lines
可以分组,Group
的类型可以是Crossing
(1)或Parallel
(2)。我需要找到至少有一组指定类型的所有行(在本例中为1)。给定行的ID可以位于组的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));
答案 0 :(得分:0)
我开始工作了!
crit.Add(Expression.Sql(
"EXISTS(select 1 from Group" +
"WHERE ({alias}.Id=LineA OR {alias}.Id=LineB)"+
"AND GroupTypeId = ?)", (int) type, NHibernateUtil.Int32));
{alias}
是要查询的对象的占位符。