2010-05-26 8 views
0

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

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

это работает отлично, но когда я страница, иногда тот же продукт появляется в первой, второй и т.д ... страниц, потому что это заказ по рандов() ,

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

ответ

4

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

order by rand(123) 

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

+0

Можно ли использовать SessionId? Или используйте случайный объект, чтобы получить номер и поставить сессию и использовать ее! хорошо .. я попробую это! Спасибо –

+0

Вы можете использовать идентификатор сеанса, но сначала вам нужно преобразовать его в число (если оно еще не указано): 'Integer.parseInt (sessionId, radix)'. – Dolph

+0

спасибо, я думаю, что я буду кэшировать число по времени (1 или 5 минут) и использовать его ... это здорово! ура –

1

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

+0

Привет, Jon, это страница с рекламными продуктами, и я хотел бы рандомизировать записи пользователям ... потому что, если бы я этого не делал, те же самые продукты всегда были на странице firts! –

+0

В этом случае вам необходимо обеспечить стабильный порядок, основанный на том, что остается постоянным для каждого пользователя. У вас есть какой-нибудь печенье? –

+0

Ну, у меня нет cookie или сеанса. Но я могу разыграть его и поставить сессию! –