2011-01-07 5 views
3

forum.hibernate.org/viewtopic.php?p=2378849Как создать подзапрос Projection, дать ему псевдоним, и сортировку по псевдониму в NHibernate с Criteria API

один из плакатов дает этот ответ:

Вам нужно создать Проецирование (...), дайте ему псевдоним, и затем вы можете отсортировать его по псевдониму. Невозможно опубликовать данные, но я уверен, что это сработает.

Может кто-то обеспечить простой пример, используя критерии API, из запроса, который использует проекцию, чтобы сделать подзапрос, а затем использует этот подзапрос в качестве псевдонима, а затем заказы этого псевдонима?

ура!

ответ

3

вы можете добавить больше DetachedCriteria в зависимости от потребностей.

Вот мой пример:

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

Надеется, что это поможет.

+0

Привет, дани, я нашел пример, который может дать вам вдохновение. проверьте это: http://davybrion.com/blog/2008/10/querying-with-nhibernate/ – BantenCity

1

Вот мой простой пример:

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

эй, спасибо bantencity, хотя мне нужен пример, используя подзапрос, а не просто сумму. есть идеи? Я отредактировал мой вопрос, чтобы сделать его более ясным. Еще раз спасибо – andy

+0

спасибо bantencity, на самом деле ваш ответ хороший, мой вопрос плох! Я попробую задать другой вопрос. – andy