|
|
|
Возможно ли в Hibernate сделать группировку по всей таблице
|
|||
|---|---|---|---|
|
#18+
Привет всем , Столкнулся с такой проблемой. Разрабатываю новостийный сайт. У меня есть таблица 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"... Но не знаю тоже, как это реализовать... Вобщем, помогите, пожалуйста, решить эту задачу! Заранее благодарен за любую помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2007, 18:08:59 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34401635&tid=2146346]: |
0ms |
get settings: |
13ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
3ms |
| others: | 271ms |
| total: | 403ms |

| 0 / 0 |
