2011-01-07 10 views
3

forum.hibernate.org/viewtopic.php?p=2378849Wie eine Unterabfrage Projektion erstellen, geben Sie ihm einen Alias ​​und sortieren Sie nach dem Alias ​​in NHibernate mit Kriterien API

einem der Plakate gibt diese Antwort:

Sie müssen erstellen Projektion (...), geben Sie ihm einen Alias ​​und Sie können dann nach dem Alias ​​sortieren. Keine Zeit, um die Details zu posten, aber ich bin mir ziemlich sicher, dass das funktionieren würde.

Könnte jemand ein einfaches Beispiel geben, die Kriterien API, einer Abfrage, die eine Projektion verwendet eine subquery zu tun, und verwendet dann die Unterabfrage als Alias ​​und dann Bestellungen dieses Alias?

Prost!

Antwort

3

Sie mehr DetachedCriteria nach Ihren Bedürfnissen hinzufügen können.

Hier ist mein Beispiel:

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(); 

Hope this Hilfe.

+0

Hi Dany, ich fand ein Beispiel, das Ihnen eine Inspiration geben könnte. Überprüfen Sie dies: http://davybrion.com/blog/2008/10/querying-with-nibernate/ – BantenCity

1

Hier ist mein einfaches Beispiel:

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();  
+0

hey, danke bantencity, obwohl ich wollte ein Beispiel mit einer Unterabfrage, nicht nur Summe. irgendwelche Ideen? Ich habe meine Frage bearbeitet, um sie klarer zu machen. danke nochmal – andy

+0

danke bantencity, eigentlich ist deine antwort gut, meine frage ist schlecht! Ich werde versuchen, eine andere Frage zu stellen – andy