我有一个Hibernate HQL问题。 我想写一个子查询作为派生表(出于性能原因)。 在HQL中可以这样做吗? 例子:在Hibernate中使用派生表的子查询HQL
FROM Customer WHERE country.id in
(SELECT id FROM (SELECT id FROM Country where type='GREEN') derivedTable)
(顺便说一句,这只是一个简单的查询,所以不要重写它给意见,只是派生表的概念我很感兴趣)
我有一个Hibernate HQL问题。 我想写一个子查询作为派生表(出于性能原因)。 在HQL中可以这样做吗? 例子:在Hibernate中使用派生表的子查询HQL
FROM Customer WHERE country.id in
(SELECT id FROM (SELECT id FROM Country where type='GREEN') derivedTable)
(顺便说一句,这只是一个简单的查询,所以不要重写它给意见,只是派生表的概念我很感兴趣)
不幸的是没有,派生表目前不在HQL中工作。 例如,下面的工作:
List<int> result =
nHSession.CreateQuery(@"select distinct Id from User u")
.List<int>().ToList();
...以下抛出此异常: 类型的异常 'Antlr.Runtime.NoViableAltException' 被抛出。近线1, 柱24
List<int> result = nHSession.CreateQuery(
@"select distinct Id from (select u from User u)")
.List<int>().ToList();
的回落将创建包含原始SQL或命名查询[从选择不同ID(来自S2.BP.Model.User U选择U)]创建一个存储过程,并通过命名查询调用它,就像这样:
List<int> result = nHSession.GetNamedQuery("spUserIds")
.SetInt32("id", 3)
.List<int>().ToList();
可以在http://blog.eyallupu.com/2009/07/hibernate-derived-properties.html
找到我的博客上得到的性能和性能考虑的一些信息希望它会有所帮助,
Eyal Lupu
有趣的文章,但并不真正涉及到这个问题。 – 2014-07-31 11:29:32