Hibernate HQL 中使用派生表的子查询

2024-05-06

我有一个 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(使用前将#替换为@)

Hibernate HQL 中使用派生表的子查询 的相关文章

随机推荐

  • std::is_trivially_copyable - 为什么易失性标量类型不可简单复制?

    C 17 的当前标准 我观察到 C 11 的类似措辞 对于普通可复制类型的措辞非常混乱 我首先使用以下代码 GCC 5 3 0 偶然发现了这个问题 class TrivialClass std is trivially copyable
  • Javascript 中繁重计算的最佳实践?

    我正在处理客户端脚本 需要进行繁重的计算 例如将大量对象推送到数组中 这会导致 JavaScript 停止响应并且浏览器挂起并发出警报 是否有任何最佳实践或设计模式来处理这些计算 我搜索并找到许多不同的方法来处理这些情况 但解决方案很难实现
  • 使用 \COPY 将带有 JSON 字段的 CSV 加载到 Postgres 中

    我正在尝试使用 COPY 命令将 TSV 数据从文件加载到 Postgres 表中 这是一个示例数据行 2017 11 22 23 00 00 id 123 class 101 level 3 这是我正在使用的 psql 命令 COPY b
  • 将 unique_ptr 与 boost python 结合使用 - boost::shared_ptr 有效,但 unique_ptr 无效

    这可能与以下问题相同 Boost Python 没有 to python for std unique ptr https stackoverflow com questions 20590205 boost python no to py
  • 如何偏移网格项目,同时移动其兄弟项目? [复制]

    这个问题在这里已经有答案了 我正在使用 CSS 网格 我想偏移一个元素 以便它在网格列上水平移动 我还希望这个元素保留其当前宽度 并应用偏移值此外到元素的宽度 Example container display grid grid temp
  • 在 mdn web 文档中 Element.querySelector 方法说它应该是后代,但示例显示不然

    我正在从 MDN 网络文档学习 JavaScript 我刚刚在学习Element querySelector method 据记载 它返回第一个元素 该元素是调用它的元素的后代 并且与指定的选择器组匹配 但有一个例子与这个事实相矛盾 var
  • 为什么 RISC-V S-B 和 U-J 指令类型以这种方式编码?

    我正在读一本书 计算机组织与设计RISC V版 我遇到了 S B 和 U J 指令类型的编码 我上面提到的那些类型有奇怪的编码立即字段 S B 类型将直接字段分为两部分 这是有道理的 因为所有指令编码都必须相似 但我无法理解为什么立即字段以
  • 将附加数据获取到 django 表单下拉选择中

    我有一个具有外键的操作模型 它指定操作重复发生的频率 class Reoccurance models Model label models CharField Label max length 50 unique True days mo
  • jQuery Mobile 和页眉/页脚问题

    使用 jQuery Mobile 有人知道为什么当使用 changePage 函数更改到内容超出视口高度的页面时 页面的页眉会消失而页脚会出现在内容顶部的视图中吗 仅当您使用过渡来更改页面时才会发生这种情况 如果您在没有过渡的情况下更改页面
  • JavaScript 动态变量名称[重复]

    这个问题在这里已经有答案了 好吧 我想在用户单击时创建变量 每次单击都会添加一个新变量 我目前正在使用 jquery 和 javascript 我无法在服务器端执行此操作 这必须在浏览器中完成 newCount document getEl
  • ElasticSearch 嵌套查询 - 排除父文档

    尝试排除其中子文档之一与查询不匹配的顶级文档 对于下面的示例 我尝试排除其嵌套作业之一具有的所有文档current true 并与company name Elastic 但由于嵌套作业文档之一与current false和公司name E
  • Istio 允许所有出口流量

    如何允许 Istio 的所有出站流量 我尝试了以下方法 禁用出口网关并 使用 set global proxy includeIPRanges 0 0 0 0 0 0 0 0 0 0 绕过 sidecar 所有选项都不起作用 值得一提的是我
  • Java:是否有工具可以使代码(在第 3 方 JAR 中)向前兼容(1.4 - 1.6)

    我有一个使用 Java 1 4 编译的第 3 方 JAR 文件 有没有一个工具可以使jar文件兼容Java 1 6 类似于 retrotranslator 但它的反面是什么 我尝试反编译类文件并在 1 6 中重新编译它们 但失败了 问题是这
  • 在 Spark-submit 上的 _find_and_load 中获取文件“”,第 991 行

    我目前使用的是Python 3 7 9 spark spark 2 4 6 bin hadoop2 6 在这个项目 venv 中 我的设置为 kafka python 2 0 2 pip 21 2 4 py4j 0 10 9 pyspark
  • 未捕获的类型错误:emit 不是 vue3 中的函数

    当我在 vue 3 设置代码块中编写此代码以获取输入值时 请遵循此answer https stackoverflow com questions 66737918 how to use v model on component in vu
  • Kendo 有 GUI 设计师吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Kendo 有没有像 Sencha Architect for Ext JS 这样的控件布局设计工具
  • IMAP 同步

    我正在实现 IMAP 客户端 但 IMAP 邮箱同步存在问题 首先 可以从 IMAP 服务器获取新邮件 但我不知道如何从邮箱中查找已删除的邮件 我应该从服务器获取所有消息并与本地数据进行比较以进行同步吗 通常的方法是对每个文件夹执行以下两个
  • nginx docker 容器:502 错误网关响应

    我有一个服务监听 8080 端口 这不是一个容器 然后 我使用官方镜像创建了一个 nginx 容器 docker run name nginx d v root nginx conf etc nginx conf d p 443 443 p
  • VBA:新集合 -> 模块不是有效类型

    我尝试使用集合作为函数的一部分 但是在编译时不断收到错误 模块不是有效类型 即使该函数只是定义一个集合 我也会得到相同的结果 Function CountUniqueTags Dim table As Collection Set tabl
  • Hibernate HQL 中使用派生表的子查询

    我有一个 Hibernate HQL 问题 我想将子查询编写为派生表 出于性能原因 在 HQL 中可以做到这一点吗 例子 FROM Customer WHERE country id in SELECT id FROM SELECT id