Nhibernate -Kriterien, um übergeordnete Objekte mit mindestens einem untergeordneten Objekt abzufragen?
-
05-07-2019 - |
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));
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