2012-11-19 8 views
1

NHibernate (NHibernate 기준 또는 LINQ를 통해)에서 다음 SQL을 달성하려고합니다.NHibernate : 집계 및 rownum

SELECT MIN(ID) 
FROM 
(SELECT * 
FROM PERSON 
WHERE CITY = 'SYDNEY' and ROWNUM < 1000) 

.l.e. 시드니 시내에 사는 최초의 1000 명 중 가장 낮은 신분증.

아이디어가 있으십니까? 건배.

+0

"처음 1000"기준의 경우 주문이 필요합니다. –

답변

2

이이 기준 API를 사용하여 비슷한 쿼리입니다 :

session.CreateCriteria<Person>() 
    .SetProjection(Projections.Min("ID")) 
    .Add(Subqueries.PropertyIn("ID", 
      DetachedCriteria.For<Person>() 
        .Add(Restrictions.Eq("CITY", "SYDNEY")) 
        .SetProjection(Projections.Property("Id")) 
        .SetMaxResults(1000))) 
    .List(); 

결과 SQL 쿼리 TOP을 (사용) 대신 ROWNUM의,하지만 난이 일을한다고 생각합니다.