少なくとも1つの子オブジェクトで親オブジェクトを照会するNHibernate基準?
-
05-07-2019 - |
質問
私のプロジェクトでは、 Lines
をグループ化でき、 Group
のタイプは Crossing
(1)またはパラレル
(2)。指定されたタイプ(この場合は1)のグループが少なくとも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