Esta declaración HQL, cuando es ejecutado produce esto, el siguiente resultado:¿Cómo convertir este HQL a DetachedCriteria?
select t, count(s) from Submission s right join s.Topics as t GROUP BY t.Id
result[0]
[0] topic_id, topic_name, ...
[1] 10
result[1]
[0] topic_id, topic_name, ...
[1] 12
.
result[n]
[0] topic_id, topic_name, ...
[1] 19
Esta API DetachedCriteria produce resultado casi similar pero sin cargar el tema
ProjectionList PrjList = Projections.ProjectionList();
PrjList.Add(Projections.GroupProperty("Topics"), "t");
PrjList.Add(Projections.Count("Id"));
DetachedCriteria Filter = DetachedCriteria.For<Submission>();
Filter.CreateCriteria("Topics", "t", JoinType.RightOuterJoin);
Filter.SetProjection(PrjList);
result[0]
[0] null
[1] 10
result[1]
[0] null
[1] 12
.
result[n]
[0] null
[1] 19
Por alguna razón nhibernate se niega a crear objetos de tema para el conjunto de resultados pero lo hace para la consulta HQL. ¿Porqué es eso?
Está intentando agrupar una clase de propiedad, pero no una propiedad. Me temo que debe agrupar cada una de las propiedades que tiene en Temas para ProjectionList. En este caso, crearía una extensión de método que agregará cada propiedad de la clase de llamada a la agrupación. – Genius
NHibernate, usando consultas HQL, es capaz de hacer lo que estoy intentando aquí. Solo quiero descubrir la manera de hacer lo mismo usando la API de Criteria. Sin embargo, lo que sugieres requerirá una transformación que espero evitar. – Roman