Я пытаюсь заставить работать следующий запрос hql, но безуспешно. Я пытаюсь выяснить, какой ранг имеет конкретного пользователя, в зависимости от значения поля в форме. В SQL это прекрасно работает.
SELECT tmp.rang
FROM (
SELECT b.ID as user, rank() as rang OVER (ORDER BY frh.Wert)
FROM EKB.KennzahlenManagement.FormularResultHistorie as frh
JOIN frh.Formular_Bogen_K_Feld fbkFeld
JOIN frh.Formular_Gesendent.Benutzer b
WHERE fbkFeld.FormularBogen.ID =:formularBogenId
AND fbkFeld.ResultFlag = 1
AND frh.Formular_Gesendent.Eingabe_nummer IN
(SELECT MAX(tmp.Eingabe_nummer)
FROM EKB.KennzahlenManagement.Formular_gesendet tmp
WHERE tmp.Benutzer.ID = frh.Formular_Gesendent.Benutzer.ID
AND tmp.Formular.ID = frh.Formular_Gesendent.Formular.ID
GROUP BY tmp.Benutzer
)
) as tmp
WHERE tmp.usr =:userId
Пока что я определил две проблемы.
1) Я получаю "NHibernate.Hql.Ast.ANTLR.QuerySyntaxException: исключение типа 'Antlr.Runtime.NoViableAltException' было сгенерировано. Рядом со строкой ..." из-за второго выбора. Как я могу решить эту проблему? Есть ли обходные пути?
2) Кажется, что-то не так с функцией rank (). Я также получаю аналогичное исключение, как выше. Нет ли ранга () в HQL? Если есть, не могли бы вы привести пример?