Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Возможно ли в Hibernate сделать группировку по всей таблице / 2 сообщений из 2, страница 1 из 1
15.03.2007, 18:08:59
    #34394357
Zealander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли в Hibernate сделать группировку по всей таблице
Привет всем ,

Столкнулся с такой проблемой.

Разрабатываю новостийный сайт. У меня есть таблица News , в ней 4 поля ( id,date,title,body )и есть еще одна таблица Hit на 3 поля (news_id,hitDate,hitCount). Первая таблица содержит новости сайта, вторая содержит количество хитов (кликов пользователей) по каждой новости на каждый день. Соответственно, News и Hit связаны по ключу id связью один-ко-многим.

В программе я использую hibernate. У меня есть java-класс, который мапится на таблицу News.

Стоит задача: отобрать топ 100 наиболее хитовых за определенный период новостей, сгрупировать их по хитовости в обратном прядке с указанием количества хитов по каждой новости. То-есть, необходимо построить список, каждым элементом которого является объект класса News и число хитов. При этом первым элементом списка должен быть тот, у которого число хитов самое большое, последним — у которого самое маленькое.

Как это сделать оптимальным образом?


Мои размышления. Похоже, что hibernate должен сгенерировать запрос вида (через Criteria, или просто через query):

select top 100 * from
News n,
(select sum(hitСount) as count from Hit where hitDate between '20061225' and '20061230' group by id) h
where n.id=h.id
order by h.count desc

Полученный результат должен быть каким-то образом преобразован в список, каждым элементом которого является объект класса News и соответствующее число.

Как это можно сделать???

Еще как вариант, написать что-то по типу hql-запроса:
select top 100 News, sum(hitСount) as hitCount
from News join Hit
where hitDate between '20061225' and '20061230'
group by News
order by hitCount desc

И результат чтобы был в таком же виде... Но как и это сделать? Насколько я ковырял, группировка по целому классу не работает, только по какому-нибудь аттрибуту

Вот еще о чем думаю. Как вариант, создать класс HitNews наследник от News, который в отличие от News содержит только одно поле int hitCount, присоединить его как <joined-subclass name="HitNews"... Но не знаю тоже, как это реализовать...

Вобщем, помогите, пожалуйста, решить эту задачу!

Заранее благодарен за любую помощь
...
Рейтинг: 0 / 0
20.03.2007, 05:12:00
    #34401635
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли в Hibernate сделать группировку по всей таблице
ResultTransformer
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Возможно ли в Hibernate сделать группировку по всей таблице / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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