NHibernate标准用至少一个子对象查询父对象?
-
05-07-2019 - |
题
在我的项目中, Lines
可以分组, Group
的类型可以是 Crossing
(1)或并行
(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));
解决方案
我开始工作了!
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