【发布时间】:2020-01-07 10:22:36
【问题描述】:
我在其中创建了自定义存储库和一种方法。我想向该查询添加可分页对象以限制返回的项目。
我创建了额外的方法,该方法将只从所有项目中提取选定的页面。但问题是,如果我有 50000 个项目,我需要将它们全部获取,然后从中获取仅选定的页面,这对性能非常不利。
public List<Team> findTeamsForUser(long userId, long statusId, TeamCriteria criteria, Pageable pageable) {
StringBuilder sb = new StringBuilder("select team from Team team join TeamMember teamMember on teamMember.team.id=team.id where
teamMember.user.id=" + userId + " AND teamMember.status.id=" + statusId);
if(criteria!=null) {
if (criteria.getGameId() != null) {
sb.append(" AND team.game.id IN " + criteria.getGameId().getIn().toString().replace("[", "(").replace("]", ")"));
}
}
sb.append(" ORDER BY team.createdDate DESC");
Query query = entityManager.createQuery(sb.toString());
return query.getResultList();
}
我想以某种方式在此查询中包含 Pageable 参数,因此我只能获得有限的项目。
【问题讨论】:
-
我不确定我是否完全理解你想要什么,你只是想
LIMIT返回结果的数量还是你想要别的?
标签: java spring spring-data-jpa