Postgres поддерживает смещение и ограничение на операторы SQL для поддержки запросов стиля разбиения на страницы. С лимитом и/или смещением в запросах результаты возвращаются намного быстрее из БД.JPA Eclipse link query.firstResult() & query.setMaxResults() с Postgres
Я использую Eclipse, Link в качестве поставщика JPA и с помощью query.firstResult() & query.setMaxResults(), сгенерированный SQL не использует предел & смещения, чтобы сузить набор результатов. Я вижу это, когда я включаюсь. Я считаю, что он устанавливает первый указатель в результирующем наборе, начинающийся с query.firstResult(). Это даже не так эффективно, как использование ограничения или смещения в SQL напрямую.
Есть ли способ заставить JPA использовать ограничение/смещение, или я застрял в запросе.firstResult() & query.setMaxResults()?
Я положил в eclipselink.target-database = PostgreSQL. Это моя информация о версии DB в журналах. База данных: PostgreSQL Версия: 9.1.9 Driver: PostgreSQL Native Driver Версия: PostgreSQL 9.0 JDBC4 (сборка 801) Я все еще не вижу значений предела и смещения, заданных в журналах для запроса. Мой уровень ведения журнала установлен в FINE в файле persistence.properties – user1796571
Когда регистрация установлена на конфигурацию или выше, что вы видите в журнале для платформы? Он должен начинаться с «platform =>». Какую версию EclipseLink вы используете? Проверить платформу shouldUseRownumFiltering() установить значение true с помощью em.unwrap (org.eclipse.persistence.internal.jpa.EntityManagerImpl.class) .getDatabaseSession(). GetPlatform(). ShouldUseRownumFiltering() – Chris
platform => PostgreSQLPlatform, версия для eclipse 2.0.2. С jpa jar (2.0.2), который я использую, он не поддерживает метод getDatabaseSession(), поэтому мне пришлось использовать getActiveSession(). После запуска я получаю следующее исключение. Причина: javax.persistence.PersistenceException: Provider-does-not-support-the-call (на это сообщение не на английском языке.) \t at org.eclipse.persistence.internal. jpa.EntityManagerImpl.unwrap (EntityManagerImpl.java:2270) – user1796571