2010-10-01 82 views
0

我想知道是否可以將此HQL查詢轉換爲標準api查詢。將HQL查詢轉換爲標準api

select s1 
from Student 
where 
    (
     select max(s2.Score) 
     from Student 
     where s1.Id = s2.Id 
    ) 
     = 10 

(選擇具有其最大得分值等於10的學生)

我不知道如果我可以使用的,因爲「s1.Id = s2.Is」條件的分離標準

感謝名單的人誰可以幫我

回答

0

她去

var subquery = Session.CreateCriteria<Student>() 
    .Add(Restrictions.EqProperty("Id", "s1.Id")) 
    .SetProjection(Projections.Max("Score")); 

var results = Session.CreateCriteria<Student>("s1") 
    .Add(Subqueries.Eq(10, subquery)) 
    .List<Patient>(); 

但我不確定原始查詢是否正確,因爲如果Id是主鍵,子查詢應始終返回1行