запрос гибернации - PullRequest
       8

запрос гибернации

0 голосов
/ 27 апреля 2011

Я пытаюсь выполнить следующий запрос, используя SQL-запрос конструкции hibernate:

SELECT thi FROM track_history_items thi 
JOIN (SELECT max(id) distinct_id FROM track_history_items WHERE type='TrackBroadcast' GROUP BY artist_id) distinctIds 
ON distinctIds.distinct_id = thi.id
ORDER BY created_at DESC;

однако, похоже, проблема в использовании скобок. Может кто-нибудь сказать мне, как правильно сформировать этот запрос для спящего режима? Заранее спасибо!

---- UPDATE ----

Я пытался

SELECT * 
FROM TrackHistoryItems thi 
WHERE id 
IN (SELECT max(id) 
  FROM TrackHistoryItems 
  WHERE type='TrackBroadcast' 
  GROUP BY artist_id) 
ORDER BY createdAt DESC;

но это занимает вечность (т. Е. Достаточно долго, чтобы я еще не видел его завершенным на момент написания).

Пожалуйста, кто-нибудь может помочь с этим - я уверен, что должен быть простой способ достичь того, чего я хочу!

1 Ответ

0 голосов
/ 27 апреля 2011

Hibernate не поддерживает подзапросы в from.Однако этот запрос можно переписать следующим образом:

SELECT thi FROM track_history_items thi 
WHERE id IN (SELECT max(id) FROM track_history_items 
            WHERE type='TrackBroadcast' GROUP BY artist_id)    
ORDER BY created_at DESC;

Если производительность этого запроса неудовлетворительная, других вариантов, кроме использования собственный запрос .

, нет.
...