У меня проблема, у меня есть запрос в JPA. так как у меня есть несколько коллекций, мне нужно использовать левую добавку присоединения или внутреннюю выборку соединения
Моя проблема заключается в использовании setFirstResult
и setMaxResult
, чтобы вернуть точное количество результатов. каждый раз, когда я вижу, что весь результат возвращается, И только ПОСЛЕ использования maxResult.
Есть ли способ сделать maxResult раньше?
Спасибо большое!
здесь больше информации:
моя проблема в том, когда я использую это:
startIndex = 0;
maxResults = 10;
query.setFirstResult(startIndex);
query.setMaxResults(maxResults);
Я вижу это сообщение в своем журнале:
7 июня 2011 г. 09:52:37 org.hibernate.hql.ast.QueryTranslatorImpl список ВНИМАНИЕ: firstResult/maxResults, указанные с помощью коллекции; применение в памяти!
Я вижу, что результат 200 возвращается (в журнале), а затем в HashSet у меня есть, наконец, 10 результат, который я задаю.
его, кажется, в памяти возвращает результат 200 и после применения maxResults в памяти.
Я ищу, есть ли способ получить и ограничить количество результатов.
Я использовал обходной путь, я делаю первый запрос, чтобы спросить идентификатор моего заказа, без какой-либо выборки, использовал maxResult. все работает отлично, он использовал инструкцию ограничения. После того, как я использую свой "большой" запрос с помощью fetch и ограничиваю результат внутри списка id, возвращаем его в первый.
вот он мой полный запрос без моего обходного пути (обратите внимание, что нет ограничений, генерируемых как разговор от @Bozho):
select o from Order o
left join fetch o.notes note
left join fetch o.orderedBy orderedBy
left join fetch orderedBy.address addressOrdered
left join fetch orderedBy.language orderedByLg
left join fetch orderedByLg.translations orderedByLgTtrad
left join fetch o.deliveredTo deliveredTo
left join fetch deliveredTo.address addressDelivered
left join fetch deliveredTo.language deliveredToLg
left join fetch deliveredToLg.translations
left join fetch o.finalReceiptPlace finalReceiptPlace
left join fetch finalReceiptPlace.address addressFinalReceiptPlace
left join fetch finalReceiptPlace.language finalReceiptPlaceLg
left join fetch finalReceiptPlaceLg.translations
inner join fetch o.deliveryRoute delivery
left join fetch delivery.translations
inner join fetch o.type orderType
left join fetch orderType.translations
inner join fetch o.currency currency
left join fetch currency.translations
left join fetch o.attachments
left join fetch note.origin orig
left join fetch orig.translations
left join fetch o.supplier sup
left join fetch sup.department dep
left join fetch o.stateDetail stateD
inner join fetch stateD.state stat
where 1=1 and o.entryDate >= :startDat