gpt4 book ai didi

java - 如何通过基于 Java 的配置在 Hibernate 中的查询上使用分页

转载 作者:行者123 更新时间:2023-12-02 11:04:40 26 4
gpt4 key购买 nike

这是我的 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(),但为此我需要一个 Session (或者我需要吗?),但我没有使用 session 来配置 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);
}

关于java - 如何通过基于 Java 的配置在 Hibernate 中的查询上使用分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51061891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com