我遇到了问题,我在JPA中有一个查询.因为我有一些集合,我需要使用左连接提取或内连接提取
我的问题是使用setFirstResult和setMaxResult,以便带回精确数量的结果.每次我看到整个结果都会在使用maxResult后重新启动.
以前有没有办法制作maxResult?
非常感谢 !
这里有更多信息:
我的问题是当我使用它时:
startIndex = 0;
maxResults = 10;
query.setFirstResult(startIndex);
query.setMaxResults(maxResults);
Run Code Online (Sandbox Code Playgroud)
我在日志中看到此消息:
7 juin 2011 09:52:37 org.hibernate.hql.ast.QueryTranslatorImpl list ATTENTION:firstResult/maxResults使用collection fetch指定; 在记忆中应用!
我看到200个结果回来了(在日志中),在HashSet之后我终于得到了10个结果.
它似乎在内存中带回200结果,并在maxResults应用于内存后.
我正在搜索是否有任何方法可以获取并限制结果的数量.
我使用了一种解决方法,我首先询问我的订单的ID,没有任何提取,使用了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 …Run Code Online (Sandbox Code Playgroud)