2012-06-28 2 views
0

Что мне нужно, это добавить «разбиение на страницы» в списке классов. Ej:Критерий спящего режима: разбиение на страницы

 
Class A 
    List B 

поэтому мне нужно ограничить список B до определенного значения

Что я делаю (с использованием критериев, и все это динамическая):

 
ICriteria criteria = Session.createCriteria(); 

ICriteria criteriaParcial = criteria.CreateCriteria("B"); 

criteriaParcial.SetFirstResult(0).SetMaxResults(10); 

criteria.list(); 

Это Например, реальный код является динамическим и итеративным.

Этот механизм работает для определения фильтрующих значений, но не для разбивки на страницы.

Любая идея? Цистерны

Обновлено !!!

Этот подход не работает, поскольку этот способ выполняет criteria.CreateCriteria("B").setMAxResults(10) Изменяет критерии корня, а не subCriteria, как я думал.

Итак, теперь мое предложение. Можно ли ограничивать или разбивать на страницы, список внутри класса?

Что-то вроде этого: У меня есть класс Person со списком адресов, поэтому я хочу загрузить Person, но только два первых объекта внутри списка адресов.

+0

Что именно вы имеете в виду под «результатами поиска работы, а не для разбивки на страницы»? –

+0

Я имею в виду, что вместо того, чтобы устанавливать значения SetFirstResult и т. Д., Я устанавливаю ограничение, подобное этому. .add (Restrictions.eq («B», новый B («somthing»))). Он работает и выполняет фильтрацию точно тот же код. – aivaldi

+0

Если вы используете целеустремленный выбор, вам следует попробовать отключить его, так как это может вызвать странные результаты с поисковым вызовом. Кроме того, когда я знаю, что могут быть проблемы с нетерпением, я предпочитаю использовать критерииParcial.SetResultTransformer (NHibernate.Transform.Transformers.DistinctRootEntity) .List() вместо простого списка() – jbl

ответ

0

Невозможно AFAIK. Но апробак ошибочен в любом случае. Лучше загружать данные корневой сущности, а в другом запросе загружать вспомогательные списки, таким образом вы можете разбивать на фильтры и сортировать по своему усмотрению.

Свойства списка не были созданы для отображения хорошо, они просто содержат список объектов и то, что они делают. Вот почему лучше всего создать другой запрос, который возвращает только те элементы.

Вы можете использовать запросы будущего, чтобы улучшить производительность БД.

+0

Если это невозможно, по крайней мере, по-моему, мне нужно будет что-то сделать, как вы сказали. – aivaldi

+0

Да. Это также даст вам гораздо больше возможностей для вашего приложения, поскольку вы не будете ограничены в вариантах своих запросов. –

Смежные вопросы