2009-11-12 4 views
0

Je souhaite sélectionner une ligne d'une table dans la base de données à l'aide de CreateCriteria où j'ai une valeur connue pour une colonne, pas une clé primaire, donc plusieurs lignes correspondant. La table contient des informations de mise à jour, de sorte que nous avons une colonne qui contient un numéro de version pour chaque ligne en fonction de laquelle, avec ma question principale donne une seule ligne unique.Utilisation de CreateCriteria et sélection d'une ligne basée sur maxvalue

J'ai essayé quelque chose le long des lignes suivantes qui fonctionne mais il semble que je devrais être capable d'utiliser quelque chose bette. Ce serait génial s'il y avait une sorte de Restriction.Max (« Avtal »)

var result = Session.CreateCriteria(typeof(Avtal)) 
.Add(Restrictions.Eq("Avtal", avtal)) 
.Add(Restrictions.Eq("Versionsnummer", 
Session.CreateCriteria((typeof(Avtal))) 
.Add(Restrictions.Eq("Avtal", avtal)) 
.SetProjection(Projections.Max("version")) 
.UniqueResult<int>())) 
.List<Avtal>(); 

Tout pointeur dans la bonne direction sera très utile et non, je ne veux pas utiliser CreateQuery, écrire HQL directement ou quelque chose comme ça, nous utilisons Critierias et nous voulons nous en tenir à cela.

Merci

Répondre

0

je suis tombé sur votre question lorsque vous cherchez la même chose, puis couru à travers cette suite:

var result = Session.CreateCriteria(typeof(Avtal)) .Add(Order.Desc("Versionsnummer")) // sort it and take the first one .UniqueResult())) .List();

Questions connexes