Сортировать по ранду по времени (HQL) - PullRequest
0 голосов
/ 26 мая 2010

Я занимаюсь разработкой веб-приложения с использованием asp.net Mvc 2 и NHibernate, и я подкладываю данные (продукты в категории) на своей странице, но эти данные случайные, поэтому я использую оператор HQL ссылка это:

string hql = "from Product p where p.Category.Id=:IdCategory order by rand()";

Работает нормально, но когда я пейджинговую страницу, иногда один и тот же продукт появляется на первой, второй и т. Д. Страницах, потому что он упорядочен по rand ().

Есть ли способ сделать случайный заказ по фиксированному периоду (внутреннему времени)? Или любое решение?

Ответы [ 2 ]

4 голосов
/ 26 мая 2010

Семя генератора случайных чисел:

order by rand(123)

Я бы предложил использовать случайное число в рамках сеанса в качестве начального числа. Таким образом, страница не будет внезапно пересортирована для одного пользователя, но все равно будет отсортирована по-разному для каждого пользователя.

1 голос
/ 26 мая 2010

Я не понимаю, почему вы сознательно рандомизируют данные. Если нет определенного порядка, в котором вы хотите их разместить, почему бы просто не упорядочить по первичному ключу?

...