Question

Dans un forum, je souhaite répertorier les messages les plus récents de chaque sujet. Dans SQL, je peux faire une sous-requête avec un groupe par sujet en prenant Max (post.date), puis faire une jointure intérieure avec le tableau des publications pour obtenir le dernier enregistrement de publication à partir de chaque sujet. Comment puis-je reproduire cela dans Icritria?

Détail: la classe de sujet n'a pas de propriété de messages.

Target SQL: Sélectionnez Post. * From Posts, (sélectionnez idTopic, Max (Date) As Date de Posts Group by idTopic) comme MaxDates où MaxDates.IdTopic = Posts.Idtopic et MaxDates.Date = Posts.Date

Tks [

Patrick Coelho

Était-ce utile?

La solution

En utilisant CreateCriteria. Ceci est très bien expliqué par Ayende Rahien.

Éditer Changé pour adresser les commentaires d'OP

Je suis sur un terrain tremblant ici, mais cela peut vous aider à démarrer:

DetatchedCriteria posts = DetachedCriteria.For<Post>("p")
    .SetProjection(Projections.Property("p.IdPost"));        
    .Add(Restrictions.EqProperty("t.IdPost", "p.IdPost"));

DetachedCriteria postMax = DetachedCriteria.For<Post>, "p2")
    .SetProjection(Projections.Max("Date"));

var topics Session.CreateCriteria<Topic>("t")
    .Add(Subqueries.Select(postMax))
    .Add(Subqueries.Exists(posts)).List<Topic>();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top