如何在基于Java的配置的Hibernate中使用查询分页

如何在基于Java的配置的Hibernate中使用查询分页,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,这是我的hibernate配置: @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory(final DataSource dataSource, final Environment env) { final LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new Lo

这是我的hibernate配置:

@Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(final DataSource dataSource,
            final Environment env)
    {
        final LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
        entityManagerFactoryBean.setDataSource(dataSource);
        entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
        entityManagerFactoryBean.setPackagesToScan("...");

        final Properties jpaProperties = new Properties();

        jpaProperties.put("hibernate.dialect", env.getRequiredProperty("hibernate.dialect"));
        jpaProperties.put("hibernate.hbm2ddl.auto", env.getRequiredProperty("hibernate.hbm2ddl.auto"));
        jpaProperties.put("hibernate.ejb.naming_strategy", env.getRequiredProperty("hibernate.ejb.naming_strategy"));
        jpaProperties.put("hibernate.show_sql", env.getRequiredProperty("hibernate.show_sql"));
        jpaProperties.put("hibernate.format_sql", env.getRequiredProperty("hibernate.format_sql"));

        entityManagerFactoryBean.setJpaProperties(jpaProperties);

        return entityManagerFactoryBean;
    }
现在,我想在HQL中进行一个查询(使用
@query(value=“query”)
),使用标准分页设置,如偏移和限制。我知道
query.setMaxResults()
query.setFirstResult()
,但为此我需要一个
会话
(或者我需要吗?),但我没有使用会话来配置Hibernate


我是否可以仅使用注释来指定偏移量和对查询的限制?是否有一种方法可以使用HQL以编程方式模拟
query.setMaxResults()
query.setFirstResult()

以下代码可能会对您有所帮助

public Page<Product> findAll(Pageable pageable){
    //custom page
    PageRequest customPageable = new PageRequest(pageable.getPageNumber(), 100);
    return productRepository.findAll(customPageable);     
}
公共页面findAll(可分页){
//自定义页
PageRequest CustomPageTable=新的PageRequest(pageable.getPageNumber(),100);
返回productRepository.findAll(可定制页面);
}

Sprind data在后台管理hibernate会话。如果需要,您可以使用hibernateTemplate来执行手动查询,但既然Spring数据提供分页查询,为什么不使用它?@akuma8您的意思是
Page
PageRequest
对象?是的,还有一个接口
分页和排序存储库
,您的存储库可以实现该接口来启用分页和排序。@akuma8谢谢,我们将尝试。