Critères NHibernate pour interroger des objets parents avec au moins un objet enfant?
-
05-07-2019 - |
Question
Dans mon projet, les lignes
peuvent être groupées et un groupe
a un type qui peut être Traverser
(1) ou . Parallèle
(2). J'ai besoin de trouver toutes les lignes qui ont au moins un groupe d'un type spécifié (dans ce cas, 1). L'identifiant d'une ligne donnée peut être sur la colonne LineA
ou LineB
d'un groupe. Voici où je suis arrivé jusqu'ici:
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));
La solution
Je l'ai fait fonctionner!
crit.Add(Expression.Sql(
"EXISTS(select 1 from Group" +
"WHERE ({alias}.Id=LineA OR {alias}.Id=LineB)"+
"AND GroupTypeId = ?)", (int) type, NHibernateUtil.Int32));
{alias}
est un espace réservé pour l'objet interrogé.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow