Попробуйте это:
DetachedCriteria dCriteria = DetachedCriteria.For<PoolItem>("pItem")
.SetProjection(Projections.Count("Id"))
.Add(Restrictions.EqProperty("pItem.PoolID", "pool.Id"));
IList<Post> posts = Session.CreateCriteria<Pool>("pool")
.Add(Subqueries.Gt(5, dCriteria)).List<Pool>();
Предполагая, что таблица PoolItem имеет столбец PoolID в качестве внешнего ключа таблицы Pool.
Отношения один-ко-многим. Если у вас нет свойства PoolID, сопоставленного в классе PoolItem, и у вас просто есть сопоставление объекта многие-к-одному с именем «Pool», то замените в отсоединенных критериях «pItem.PoolID» на «pItem.Pool.Id».