Режим прокрутки.ТОЛЬКО ДЛЯ ПЕРЕСЫЛКИ

#java #sql #hibernate #scroll

#java #sql #переход в спящий режим #прокрутка

Вопрос:

Даже я искал в Google, я хочу быть абсолютно уверен в одной вещи. ScrollMode.FORWARD_ONLY Означает ли это, что я буду получать результаты в том порядке, в котором они находятся в базе данных?

У меня есть что-то вроде:

 Scroller<Integer> foundRecs = new Scroller<Integer>(query.scroll(ScrollMode.FORWARD_ONLY));
  

Возможно, это глупый вопрос…

Ответ №1:

Этот конкретный API — это Hibernate, о котором я не слишком много знаю, но я предполагаю, что в конечном итоге он соответствует TYPE_FORWARD_ONLY его документация согласуется с упоминанием этой константы).

Если это так, то нет: это не повлияет на порядок, в котором возвращаются элементы.

Это всего означает, что вы можете просмотреть результат только один раз и перемещаться только вперед (не назад).

Базы данных на самом деле не имеют «порядка», в котором они хранят данные, потому что их таблицы представляют собой наборы (не списки). Если вам нужен некоторый порядок для ваших результатов, то вам нужно добавить ORDER BY в ваш SQL (или эквивалент в любой системе запросов, которую вы используете).

Ответ №2:

Вы не можете полагаться на физический порядок данных в базе данных. Это может сработать, если вы запрашиваете только одну таблицу, но не сработает, как только вы используете объединения.
Если вы хотите, чтобы ваши данные отображались в определенном порядке, вам нужно предложение ORDER BY .