ScrollMode.FORWARD_ONLY - PullRequest
       10

ScrollMode.FORWARD_ONLY

1 голос
/ 04 мая 2011

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

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

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

Может быть, это глупый вопрос ...

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

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

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

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

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

1 голос
/ 04 мая 2011

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

...