преобразовать HQL-запрос в критерии API - PullRequest
0 голосов
/ 01 октября 2010

Мне интересно, возможно ли преобразовать этот HQL-запрос в API-запрос критерия.

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

(выбирает студентов, чье максимальное значение балла равно 10)

Я не знаю, смогу ли я использовать независимые критерии из-за условия 's1.Id = s2.Is *

Спасибо всем, кто может мне помочь

1 Ответ

0 голосов
/ 18 августа 2011

она идет

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 является первичным ключом

...