少なくとも1つの子オブジェクトで親オブジェクトを照会するNHibernate基準?

StackOverflow https://stackoverflow.com/questions/1807135

質問

私のプロジェクトでは、 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} は、照会されるオブジェクトのプレースホルダーです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top