我创建了自定义仓库和其中一个方法。我想在查询中添加可分页对象以限制返回的项。
我创建了一个额外的方法,用于仅从所有项中提取所选页面。但问题是,如果我有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参数,以便只获取有限的项目。