2010-10-01 1 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» условие

Thanx для тех, кто может помочь мне

ответ

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

, но я не если исходный запрос верен, потому что подзапрос всегда должен возвращать 1 строку, если Id является первичным ключом

Смежные вопросы