gpt4 book ai didi

hql - 在 Hibernate HQL 中使用派生表进行子查询

转载 作者:行者123 更新时间:2023-12-04 02:17:54 27 4
gpt4 key购买 nike

我有一个 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();

关于hql - 在 Hibernate HQL 中使用派生表进行子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2433729/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com