2016-08-17 3 views
0

Я реализую пользовательскую разбивку на страницы в Java, и мне интересно, почему метод setFirstResult() Query принимает int как аргумент? Это означает, что я не буду иметь возможность разбивать страницы после того, как количество строк в БД превышает 2.147.483.647?Почему setFirstResult() в Query принимает параметр int?

Есть ли способ использовать длинный вместо этого?

+4

серьезный? вы собираетесь разбивать страницы на 2 миллиарда записей? –

+0

только в теории, например. Я думаю, что у FB есть более 2 миллиардов сообщений – Peter

+1

Если у вас такой огромный набор результатов, я думаю, вам нужно разбивать страницы на условия запроса (что вам, вероятно, придется делать по причинам производительности в любом случае). – Thilo

ответ

1

Потому что int достаточно большой на вполне допустимой отметке. Учитывая, что при использовании LIMIT/OFFSET рекомендуется получить предложение ORDER BY, чтобы получить достоверные результаты (в противном случае вы можете получить одинаковые строки на нескольких страницах), с набором результатов из 2 миллиардов строк, которые вы будете сортировать на сервере, а затем пропустите OFFSET строк чтобы получить вашу страницу, она будет довольно неэффективной даже до того, как вы дойдете до пределов int.

+1

... что означает разбиение огромных наборов данных, вам нужно добавить такие вещи, как 'WHERE sortField1> =? AND sortField2> =? И id>? 'В ваш запрос (т. Е. Страница вручную, удалив необходимость в СМЕЩЕНИИ) – Thilo

+0

@Thilo Exactomundo. – Kayaman

+0

Я предполагаю, что ваши рассуждения об ORDER BY действительны. Спасибо вам обоим! – Peter

Смежные вопросы