Я создал похожее решение, но всего за одну поездку в БД:
DetachedCriteria subQuery = ... // -> Добавить все необходимые критерии, включая «SetFirstResult» и «SetMaxResults»
DetachedCriteria rootQuery = DetachedCriteria.For (); // где T - сущность
subQuery.SetProjection (
Projections.Distinct (
Projection.ProjectionList (). Add (Projection.Alias (Projection.Property ("ID"), "ID"))
)
);
// Примечание: все мои сущности наследуются от базового класса, который содержит свойство "ID"
rootQuery.Add (Subqueries.PropertyIn ("ID", subQuery));
// ... затем используйте rootQuery для получения списка T, и повторный элемент не будет получен.
Я надеюсь, что кто-то найдет эту реализацию полезной:)
1017 * Román *