2010-04-26 2 views
4

У меня есть следующий SQL-запрос:Nhibernate HQL подвыбор запросы

select c.id 
from (select id from customers) c 

Этот запрос не имеет никакого практического значения - я упростил значительно для целей этого поста.

Мой вопрос: возможно ли иметь подзапрос в предложении from с использованием HQL. Если нет, могу ли я, возможно, сначала запросить клиентов, как временную таблицу в sql, а затем использовать результат в качестве источника следующего запроса?

спасибо

ответ

7

Да, это возможно.

Запрос выше можно записать в HQL как:

select Id 
from Customer 
where Id in (select Id from Customer) 
+0

Я пробовал, но это не работает. Однако, когда я меняю подзапрос, он отлично работает – MegaByte

+0

Извините, вы правы. Он поддерживает подзапросы, но не все из них. Я меняю свой ответ. –

+0

Да, это работает нормально - есть ли другое решение. Мне не нравится предложение IN - что произойдет, если таблица клиентов содержит 1000 записей ... вы, вероятно, столкнетесь с некоторыми проблемами памяти. – MegaByte

3

Я столкнулся с этой проблемой сам. Потребовалось некоторое время, чтобы понять, что hql не поддерживает подзапросы в предложении from.

См. Раздел 14.13 в документации hql here.

Смежные вопросы