Come creare un sottoquery proiezione, dargli un Alias, e ordinare per l'Alias ??in NHibernate con l'API Criteri

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

Domanda

forum.hibernate.org/viewtopic.php?p=2378849

uno dei manifesti dà questa risposta:

  

È necessario creare una proiezione (...), dare un alias e si può quindi ordinare per l'alias.   Non c'è tempo per inviare i dettagli, ma sono abbastanza sicuro che avrebbe funzionato.

Qualcuno potrebbe fornire un semplice esempio, utilizzando l'API criteri, di una query che utilizza una proiezione di fare un subquery , e poi utilizzata tale subquery come un alias, e poi gli ordini da quel Alias?

evviva!

È stato utile?

Soluzione

è possibile aggiungere più DetachedCriteria base alle vostre esigenze.

Ecco il mio esempio:

DetachedCriteria sum = DetachedCriteria.For(typeof(MasterAsset), "asset2")
                    .SetProjection(Projections.Sum("PhysicCondition"));

DetachedCriteria count = DetachedCriteria.For(typeof(MasterAsset), "asset3")
                    .SetProjection(Projections.Count("PhysicCondition"));

Session.CreateCriteria(typeof(MasterAsset), "asset1")
                    .SetProjection(Projections.ProjectionList()
                    .Add(Projections.Property("IDMasterAsset"), "IDAsset"))
                    .Add(Subqueries.PropertyLt("PhysicCondition", sum))
                    .Add(Subqueries.PropertyLe("PhysicCondition", count))
                    .AddOrder(Order.Asc("IDAsset"))
                    .List();

Spero che questo aiuto.

Altri suggerimenti

Ecco il mio esempio semplice:

DetachedCriteria sum = DetachedCriteria.For(typeof(MasterAsset), "asset2")
                  .SetProjection(Projections.Sum("PhysicCondition"));
Session.CreateCriteria(typeof(MasterAsset), "asset1")
          .SetProjection(Projections.ProjectionList().Add(Projections.Property("IDMasterAsset"), "IDAsset"))
          .Add(Subqueries.PropertyLt("PhysicCondition", sum))
          .AddOrder(Order.Asc("IDAsset"))
          .List();     
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top