Коррелированные подзапросы в предложении HQL Select - PullRequest
0 голосов
/ 20 февраля 2012

Я пытаюсь использовать коррелированные запросы в HQL (в предложении select) впервые, и у меня возникла проблема:

Мой запрос HQL имеет тип:

SELECT CMP.id ,CMP.Name, CMP.startDate, CMP.endDate, CMPTTL.impr, CMPTTL.cnImpr,(CMPTU.id.login   
        FROM Z CMPTU 
        WHERE CMPTU.id.cId=CMP.id AND CMPTU.id.login = 'pqr@xyz.com')  
FROM X CMP, Y CMPTTL
WHERE CMP.Status = 'L' AND CMP.id = CMPTTL.Id (+)

Asсогласно документации Hibernate " подзапросы HQL могут появляться только в предложениях select или where. Даже коррелированные подзапросы (подзапросы, которые ссылаются на псевдоним во внешнем запросе) разрешены. "

Но когдая выполняю свой HQl У меня есть эта ошибка

" org.hibernate.QueryException: агрегатная функция ожидается раньше (в SELECT "

я виделselectParser из hibernate и ожидает агрегатную функцию всякий раз, когда встречается "(".

Пожалуйста, предложите

Заранее спасибо

1 Ответ

0 голосов
/ 21 февраля 2012

Возможно, проблема в том, что вы присоединяетесь к Z и id несколько раз в одном запросе .Я изменил ваш подзапрос, чтобы использовать псевдоним соединения.Я не мог проверить это, но надеюсь, что это работает.

SELECT CMP.id ,CMP.Name, CMP.startDate, CMP.endDate,
 CMPTTL.impr, CMPTTL.cnImpr,
   (CMPTUid.login FROM Z CMPTU join CMPTU.id as CMPTUid 
        WHERE CMPTUid.cId=CMP.id AND CMPTUid.login = 'pqr@xyz.com')  
FROM X CMP, Y CMPTTL
WHERE CMP.Status = 'L' AND CMP.id = CMPTTL.Id (+)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...