powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate как выбрать случайную запись?
15 сообщений из 15, страница 1 из 1
Hibernate как выбрать случайную запись?
    #37753872
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли какой то способ отличный от генерирования id от нуля до максимального значения в БД и обычного Select'а ?
Может быть такая функция уже есть в Hibernate?
...
Рейтинг: 0 / 0
Hibernate как выбрать случайную запись?
    #37753876
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdm,
запрос без сортировки = случайной
...
Рейтинг: 0 / 0
Hibernate как выбрать случайную запись?
    #37753880
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, не совсем понял вас
...
Рейтинг: 0 / 0
Hibernate как выбрать случайную запись?
    #37753885
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdm,
я тоже не понял замысла.
Записи в БД лежат в случайном порядке всегда.
...
Рейтинг: 0 / 0
Hibernate как выбрать случайную запись?
    #37753890
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто напиши select объекта без условия и Fetch-ани первую запись.
Или поставь ограничение на кол-во записей (1).
Не знаю, как это в хибере делается.
...
Рейтинг: 0 / 0
Hibernate как выбрать случайную запись?
    #37753897
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Не катит.... Данные сервером кешируются, поэтому результаты будут совпадать....
...
Рейтинг: 0 / 0
Hibernate как выбрать случайную запись?
    #37753898
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Hibernate как выбрать случайную запись?
    #37753901
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdm,
ты перепутал.
Генератор случайностей random запускают для НЕповторения случайных.
Если в задаче выбрать одну и один раз, то бери любую.
А вообще, идиотские задачи неинтересны.
Удачи!
...
Рейтинг: 0 / 0
Hibernate как выбрать случайную запись?
    #37754033
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой подход плохой или нормальный?

Код: 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
Hibernate как выбрать случайную запись?
    #37755088
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не хочу показаться белой вороной и я знаю, что "храним без сортировки", но это не значит, что выбираем без сортировки. По умолчанию, сортируется во многих базах по pk, насколько я встречал;) Так что..мало ли;) Лучше навесить рандом на pk(если это автоинкремент какой нибудь)
...
Рейтинг: 0 / 0
Hibernate как выбрать случайную запись?
    #37755093
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmТакой подход плохой или нормальный?нормальный
...
Рейтинг: 0 / 0
Hibernate как выбрать случайную запись?
    #37755100
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Записи в БД лежат в случайном порядке всегда.это не значит, что
Код: plaintext
select * from some_table limit 1;
и
Код: plaintext
select * from some_table limit 1;
вернут разные результаты
...
Рейтинг: 0 / 0
Hibernate как выбрать случайную запись?
    #37755159
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.net,

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

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


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