2010-10-01 3 views
0

Je me demande s'il est possible de convertir cette requête HQL en une requête API api.convertir la requête HQL aux critères api

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

(sélectionne les étudiants qui ont leur valeur de score maximum égal à 10)

Je ne sais pas si je pouvais utiliser un critère détaché en raison de la condition « s1.Id = s2.Is »

Thanx pour tous ceux qui peuvent me aider

Répondre

0

son va

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

mais je ne suis pas Assurez-vous que la requête d'origine est correcte car la sous-requête doit toujours renvoyer 1 ligne si Id est la clé primaire

Questions connexes