如何在基于Java的配置的Hibernate中使用查询分页
这是我的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
@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谢谢,我们将尝试。