RSS 2.0 Версия для КПК (Бета)
Конференция JavaTalks  :  Java форум
JavaTalks - форум программистов
Java форум JavaTalks
форум программистов 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
HibernateTemplate+HQL. Pagination

 
Начать новую тему   Ответить на тему    Список форумов Java форум JavaTalks -> Персистентность в Java (JPA, ORM, ODB)
Предыдущая тема :: Следующая тема  
Автор Сообщение
Староверъ
Ктапубеп


Зарегистрирован: 26.01.2008
Сообщения: 5392
Откуда: Русь

СообщениеДобавлено: Дек 04, 2009 14:39    Заголовок сообщения: HibernateTemplate+HQL. Pagination Ответить с цитатой

Нужно реализовать постраничное извлечение данных. Хотелось бы использовать Query, однако HibernateTemplate с ними не работает. С помощью Criteria не выйдет, т.к. мне приходит prepared hql. Пока сделал так, но сами понимаете что это за решение. Пока никто не увидел, нужно найти нормальное Smile
Код:
    public List<T> getObjects(String request, Object[] values, int pageNumber, int pageSize) {
        return getHibernateTemplate().find(request, values).subList(pageNumber * pageSize, pageNumber * (pageSize + 1));
    }
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
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 Ответить с цитатой

Спасибо! Smile Я, кстати, в тот раз решил задачу несколько иначе:
Код:
    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();
            }
        });
    }
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Java форум JavaTalks -> Персистентность в Java (JPA, ORM, ODB) Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Этот сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

GetJava Download Button Rambler's Top100
Хостинг от bizname.ru
При поддержке hitech.com.ua