Я реализую серверную подкачку данных с hibernate / JPA, базовой базой данных является MS SQL Server 2008.
SQL генерируется так:
criteria.setFirstResult(pagingParams.getDisplayStart())
.setMaxResults(pagingParams.getDisplayLength());
(Основная работа заключается в создании соответствующего фильтра / сортировки, но здесь это не актуально)
Я наблюдаю следующий SQL:
page (0-20):
select top 20 this_.id as id11_9_,...
page (20-40):
select top 40 this_.id as id11_9_,...
page (40-60):
select top 60 this_.id as id11_9_,...
... и так далее.
Очевидно, что это (a) столкнется с серьезными проблемами, если базовый набор результатов станет слишком большим и (b) не имеет ничего общего с подкачкой: - (
Любой, кто имелта же проблема?
Обновление : похоже, что NHibernate (реализация Hibernate .NET) использует функции Row_Number()
T-SQL.что Hibernate не ...