Tenemos una consulta que selecciona filas según el valor de otra, es decir. El máximo. No creo que realmente tenga mucho sentido, así que aquí está la consulta:Seleccionar objeto cuando una propiedad es igual a Máx. Con NHibernate
var deatched = DetachedCriteria.For<Enquiry>("e2")
.SetProjection(Projections.Alias(Projections.Max("Property"), "maxProperty"))
.Add(Restrictions.EqProperty("e2.EnquiryCode", "e.EnquiryCode"));
session.CreateCriteria(typeof(Enquiry), "e")
.Add(Subqueries.PropertyEq("Property", deatched))
.AddOrder(Order.Asc("EnquiryCode"));
Mi pregunta es, ¿es esta la mejor manera? ¿Alguien puede sugerir una mejor manera?
Creo que es la mejor manera de hacerlo. En SQL escribiría: SELECCIONE e * * de e WHERE e.Property = (SELECT MAX (e2.Property) WHERE e2.EnquiryCode = e.EnquiryCode) y eso es todo lo que está haciendo en su HQL. –
Gracias, esto me ayudó con un problema similar (¡aunque no tienes respuestas!) – PandaWood