Код: Выделить всё
ScrollableResults results = session.createQuery("SELECT person FROM Person person")
.setReadOnly(true).setCacheable(false).scroll(ScrollMode.FORWARD_ONLY);
while (results.next())
storeInFile(results.get()[0]);
Полагаю, ScrollableResults - это не то, что я искал? Как правильно с этим справиться? Я не возражаю, если это цикл while занимает несколько дней (ну, мне бы это понравилось нет).
Я думаю, единственный другой способ справиться с этим — использовать setFirstResult и setMaxResults для перебора результатов и просто использовать обычные результаты Hibernate вместо ScrollableResults. Однако кажется, что это будет неэффективно и займет смехотворно много времени, когда я вызываю setFirstResult в 89-миллионной строке...
ОБНОВЛЕНИЕ: setFirstResult/setMaxResults не работает, оказывается, что получение смещений занимает неприемлемо много времени, как я и боялся. Здесь должно быть решение! Разве это не довольно стандартная процедура?? и используйте JDBC или что-то еще.
ОБНОВЛЕНИЕ 2: решение, которое я придумал, работает нормально, не очень хорошо, в основном форма:
Код: Выделить всё
select * from person where id > and limit 1
Подробнее здесь: https://stackoverflow.com/questions/282 ... on-records
Мобильная версия