Это моя конфигурация гибернации:
@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 (или я?), Но я не использовал сеансы для настройки Hibernate.
Могу ли я использовать аннотации только для указания смещения и ограничения запросов? Есть ли способ использовать HQL для программного моделирования query.setMaxResults() и query.setFirstResult()?
@ akuma8 Вы имеете в виду объекты Page и PageRequest?
Да, есть также интерфейс PagingAndSortingRepository<T,ID>, который ваш репозиторий может реализовать для включения разбиения по страницам и сортировки.
@ akuma8 Спасибо, постараюсь.




Следующий код может вам помочь.
public Page<Product> findAll(Pageable pageable){
//custom page
PageRequest customPageable = new PageRequest(pageable.getPageNumber(), 100);
return productRepository.findAll(customPageable);
}
Данные Sprind управляют сеансом гибернации незаметно. Вы можете получить hibernateTemplate для выполнения ручных запросов, если хотите, но поскольку данные Spring предоставляют запросы на разбиение на страницы, почему бы вам не использовать его?