将HQL查询转换为条件api

时间:2010-10-01 18:48:41

标签: nhibernate api hql criteria

我想知道是否可以将此HQL查询转换为条件API查询。

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

(选择最高分数等于10的学生)

我不知道我是否可以使用分离标准,因为's1.Id = s2.Is'条件

对任何可以帮助我的人来说,Thanx

1 个答案:

答案 0 :(得分: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行