Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate как выбрать случайную запись? / 15 сообщений из 15, страница 1 из 1
14.04.2012, 12:56:23
    #37753872
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
Есть ли какой то способ отличный от генерирования id от нуля до максимального значения в БД и обычного Select'а ?
Может быть такая функция уже есть в Hibernate?
...
Рейтинг: 0 / 0
14.04.2012, 13:01:33
    #37753876
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
rdm,
запрос без сортировки = случайной
...
Рейтинг: 0 / 0
14.04.2012, 13:03:45
    #37753880
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
Petro123, не совсем понял вас
...
Рейтинг: 0 / 0
14.04.2012, 13:13:16
    #37753885
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
rdm,
я тоже не понял замысла.
Записи в БД лежат в случайном порядке всегда.
...
Рейтинг: 0 / 0
14.04.2012, 13:20:27
    #37753890
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
Просто напиши select объекта без условия и Fetch-ани первую запись.
Или поставь ограничение на кол-во записей (1).
Не знаю, как это в хибере делается.
...
Рейтинг: 0 / 0
14.04.2012, 13:30:29
    #37753897
risk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
MasterZiv,

Не катит.... Данные сервером кешируются, поэтому результаты будут совпадать....
...
Рейтинг: 0 / 0
14.04.2012, 13:33:29
    #37753898
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
Petro123, Есть база данных в ней 1.000.000 записей, задача выбрать случайную запись.
Варианты:

SELECT * FROM street WHERE ID = id
SELECT * FROM street WHERE ID >= id LIMIT 1

где id случайное число от 0 до максимального в таблице (SELECT count (id) FROM street).

SELECT * FROM street ORDER BY RAND() LIMIT 1

имеется что-то готовое в Hibernate для такой задачи?
...
Рейтинг: 0 / 0
14.04.2012, 13:41:01
    #37753901
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
rdm,
ты перепутал.
Генератор случайностей random запускают для НЕповторения случайных.
Если в задаче выбрать одну и один раз, то бери любую.
А вообще, идиотские задачи неинтересны.
Удачи!
...
Рейтинг: 0 / 0
14.04.2012, 16:41:37
    #37754033
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
Такой подход плохой или нормальный?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
 Event execute = (Event) hibernateTemplate.execute(new HibernateCallback() {

            @Override
            public Event doInHibernate(Session session) {

                Event result = null;


                Criteria criteria = session.createCriteria(Event.class);
                criteria.setProjection(Projections.rowCount());
                int count = ((Number) criteria.uniqueResult()).intValue();

                if (0 != count) {
                    int index = new Random().nextInt(count);
                    criteria = session.createCriteria(Event.class);

                    result = (Event) criteria.setFetchMode("city", FetchMode.JOIN).setFirstResult(index).setMaxResults(1).uniqueResult();
                }


                return result;
            }
        });



        return execute;
...
Рейтинг: 0 / 0
16.04.2012, 10:09:12
    #37755088
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
Не хочу показаться белой вороной и я знаю, что "храним без сортировки", но это не значит, что выбираем без сортировки. По умолчанию, сортируется во многих базах по pk, насколько я встречал;) Так что..мало ли;) Лучше навесить рандом на pk(если это автоинкремент какой нибудь)
...
Рейтинг: 0 / 0
16.04.2012, 10:15:51
    #37755093
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
rdmТакой подход плохой или нормальный?нормальный
...
Рейтинг: 0 / 0
16.04.2012, 10:18:59
    #37755100
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
Petro123Записи в БД лежат в случайном порядке всегда.это не значит, что
Код: plaintext
select * from some_table limit 1;
и
Код: plaintext
select * from some_table limit 1;
вернут разные результаты
...
Рейтинг: 0 / 0
16.04.2012, 11:03:09
    #37755159
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
grasoff.net,

Я о повторяемости уже сказал выше.
...
Рейтинг: 0 / 0
16.04.2012, 12:35:30
    #37755298
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
Такой подход плохой или нормальный?

Будет тормозить если табличка не очень маленькая. Можно использовать нестандартные расширения СУБД, типа ораклового sample.
...
Рейтинг: 0 / 0
16.04.2012, 13:52:06
    #37755417
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate как выбрать случайную запись?
Спасибо за ответы!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate как выбрать случайную запись? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]