#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 .