Nhibernate -Kriterien, um übergeordnete Objekte mit mindestens einem untergeordneten Objekt abzufragen?

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

Frage

In meinem Projekt, Lines kann gruppiert und a Group hat einen Typ, der entweder sein kann Crossing (1) oder Parallel (2). Ich muss alle Zeilen finden, die mindestens eine Gruppe eines bestimmten Typs haben (in diesem Fall 1). Die ID einer bestimmten Zeile kann entweder in der Spalte sein LineA oder LineB einer Gruppe. Hier habe ich so weit gekommen:

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));
War es hilfreich?

Lösung

Ich habe es zum Laufen gebracht!

crit.Add(Expression.Sql(
  "EXISTS(select 1 from Group" +
  "WHERE ({alias}.Id=LineA OR {alias}.Id=LineB)"+
    "AND GroupTypeId = ?)", (int) type, NHibernateUtil.Int32));

{alias} ist ein Platzhalter für das abfragende Objekt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top