Page<T> findAll(Specification<T> spec, Pageable pageable)
List<T> findAll(Specification<T> spec)
List<T> findAll(Specification<T> spec, Sort sort)
Slice<T> findAll(Specification<T> spec, Pageable pageable)
List<T> findAll(Specification<T> spec, Pageable pageable)
查看SimpleJParepository的findall(Specification,Pageable)
和readpage(TypedQuery,Pageable,Specification)
方法。Spring的实现似乎总是执行count查询,并在执行select查询之前检查startIndex是否在范围之外:
protected Page<T> readPage(TypedQuery<T> query, Pageable pageable, Specification<T> spec) {
query.setFirstResult(pageable.getOffset());
query.setMaxResults(pageable.getPageSize());
Long total = QueryUtils.executeCountQuery(getCountQuery(spec));
List<T> content = total > pageable.getOffset() ? query.getResultList() : Collections.<T> emptyList();
return new PageImpl<T>(content, pageable, total);
}
我不相信这总是最好的做法。例如,在我的用例中,我们很乐意在前面执行一次计数查询,而不是在后面的调用中执行,因为我们知道新数据不会频繁地来保证计数更新,而且计数查询执行起来非常昂贵。
如果Spring Data可以提供一个标志或一个替代方法来禁用count for cerritione查询,就像简单的find查询一样,那就太好了。
@Repository
public class CriteriaNoCountDao {
@PersistenceContext
protected EntityManager em;
public <T, ID extends Serializable> Page<T> findAll(Specification<T> spec, Pageable pageable, Class<T> clazz){
SimpleJpaNoCountRepository<T, ID> noCountDao = new SimpleJpaNoCountRepository<T, ID>(clazz, em);
return noCountDao.findAll(spec, pageable);
}
/**
* Custom repository type that disable count query.
*/
public static class SimpleJpaNoCountRepository<T, ID extends Serializable> extends SimpleJpaRepository<T, ID> {
public SimpleJpaNoCountRepository(Class<T> domainClass, EntityManager em) {
super(domainClass, em);
}
/**
* Override {@link SimpleJpaRepository#readPage(TypedQuery, Pageable, Specification)}
*/
protected Page<T> readPage(TypedQuery<T> query, Pageable pageable, Specification<T> spec) {
query.setFirstResult(pageable.getOffset());
query.setMaxResults(pageable.getPageSize());
List<T> content = query.getResultList();
return new PageImpl<T>(content, pageable, content.size());
}
}
}
我正在使用boto3客户端访问存储在亚马逊S3桶中的日期。阅读文档后,我看到我可以用下面的代码提出请求:我对存储了3000个对象的桶进行测试,这段代码检索对所有对象的引用。我听说所有对S3的API调用最多返回1000个条目。 但是阅读boto3留档分页器部分,我看到一些S3操作需要使用分页来检索所有结果。我不明白为什么上面的代码工作,除非代码使用引擎盖下的分页器。这是我的问题,我可以安全地假设上层
问题内容: 我想知道在使用selenium时如何禁用javascript,以便可以测试服务器端验证。 我找到了这篇文章,但我不知道该怎么做。就像我制作此javascript文件,然后呢? http://thom.org.uk/2006/03/12/disabling-javascript-from- selenium/ 问题答案: 编辑 在此期间,确实出现了更好的替代方法,请参见其他答案,例如 如
问题内容: 如何使用和在一起? personelRepository.java personelService.java personelController.java 当我运行它时,会出现这样的错误。但是,如果我像findAll(Pageable page)和findAll(Specification filter)一样分别调用findAll()函数,它将起作用。但是我不能一起使用。 问题答案:
问题内容: 我已通过solr facet stats从solr中选择了所有记录,但无法对其进行分页,如何按pageSize和pageNum分页? 问题答案: 使用solr facet统计信息时无法分页,因为使用solr facet统计信息将统计所有文档。
我必须使用WebClient进行分页API调用,并最终组合所有结果。例如:个人最新1000交易详情。在一次调用中,我将在json响应(List)中获得最大100个对象。这个人最多只能得到1000条记录。 在伪代码java中,它可能看起来像这样 如何在SpringMVC中以反应式方式编写相同的内容而不阻塞? 像这样的东西???我不知道。帮助我
问题内容: 我正在尝试使用这种格式来格式化当前时间。 输出: 有什么建议? 问题答案: 用 由于Go使用以下常量来格式化日期,请参阅此处