|
|
Java форум JavaTalks форум программистов
|
|
|
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
Староверъ Ктапубеп

Зарегистрирован: 26.01.2008 Сообщения: 5392 Откуда: Русь
|
Добавлено: Дек 04, 2009 14:39 Заголовок сообщения: HibernateTemplate+HQL. Pagination |
|
|
Нужно реализовать постраничное извлечение данных. Хотелось бы использовать Query, однако HibernateTemplate с ними не работает. С помощью Criteria не выйдет, т.к. мне приходит prepared hql. Пока сделал так, но сами понимаете что это за решение. Пока никто не увидел, нужно найти нормальное
| Код: |
public List<T> getObjects(String request, Object[] values, int pageNumber, int pageSize) {
return getHibernateTemplate().find(request, values).subList(pageNumber * pageSize, pageNumber * (pageSize + 1));
} |
|
|
| Вернуться к началу |
|
 |
refref Новичок
Зарегистрирован: 04.12.2009 Сообщения: 2
|
Добавлено: Мар 11, 2010 10:46 Заголовок сообщения: RE: HibernateTemplate+HQL. Pagination |
|
|
| Код: |
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
Query q = session.createQuery(...);
// Query q = getSession().createFilter(collection, ...);
q.setFirstResult( from ); // позиция начала страницы
q.setMaxResults( perpage ); // размер страницы (количество записей)
|
удачи |
|
| Вернуться к началу |
|
 |
Староверъ Ктапубеп

Зарегистрирован: 26.01.2008 Сообщения: 5392 Откуда: Русь
|
Добавлено: Мар 11, 2010 11:01 Заголовок сообщения: RE: HibernateTemplate+HQL. Pagination |
|
|
Спасибо! Я, кстати, в тот раз решил задачу несколько иначе:
| Код: |
public List<T> getObjects(final String request, final Object[] values, final int pageNumber, final int pageSize) {
return (List<T>) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(org.hibernate.Session session) throws HibernateException {
Query query = session.createQuery(request).setCacheable(true).setCacheRegion(entityClass.getName());
query.setFirstResult(pageNumber * pageSize);
query.setMaxResults(pageSize);
for (int i = 0; i < values.length; i++) {
query.setParameter(i, values[i]);
}
return query.list();
}
});
} |
|
|
| Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|