NHibernate HQL子查询查询

4

我有以下SQL查询:

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

这个查询没有实际价值 - 我为了本篇文章的目的大大简化了它。

我的问题是:在HQL中是否可以在from子句中使用子查询?如果不行,我可以先查询客户,类似于SQL中的临时表,然后将结果用作下一个查询的源吗?

谢谢

2个回答

7

是的,这是可能的。

上面的查询可以用HQL编写成:

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

我尝试过了,但它不起作用。然而,当我更改子查询时,它可以正常工作。 - MegaByte
抱歉,你是对的。它确实支持子查询,但不是所有类型的子查询。我正在更改我的答案。 - Diego Mijelshon
是的,那似乎可以正常工作 - 还有其他解决方案吗?我不喜欢IN子句 - 如果客户表包含1000个条目会发生什么...你可能会遇到一些内存问题。 - MegaByte
这可能不会发生在您实际的查询中(上面的查询并没有太多意义)。想要发布更接近真实查询的内容吗? - Diego Mijelshon

5

我自己也遇到了这个问题。花了一段时间才意识到hql不支持在from子句中使用子查询。

请参阅hql文档中的第14.13节(在此处)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接