我有一个 Hibernate HQL 问题。
我想将子查询编写为派生表(出于性能原因)。
在 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 列 [从以下位置选择不同的 Id(从 S2.BP.Model.User u 中选择 u)]
List<int> result = nHSession.CreateQuery(
@"select distinct Id from (select u from User u)")
.List<int>().ToList();
后备方案是创建一个包含原始 sql 的命名查询,或者创建一个存储过程并通过命名查询调用它,如下所示:
List<int> result = nHSession.GetNamedQuery("spUserIds")
.SetInt32("id", 3)
.List<int>().ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)