当前位置: 首页 > 知识库问答 >
问题:

从QueryDSL JPA(JPAQuery或JPQLQuery)获取本机SQL

潘宸
2023-03-14

我需要为分页的目的计算group by记录的数量。例如:

select count(*) from ( 
    select name, count(id) from customer
    group by name
);

但由于JPA的限制,JPQL不允许从子查询中选择计数,因此无法通过QueryDSL实现。

是否可以从QueryDSL、JPAQuery或JPQLQuery获取本机SQL?我的计划是通过EntityManager构造并执行select count本机SQL语句。

String subQueryNativeSQL = "..."; // native SQL from QueryDSL
Query q = em.createNativeQuery("select count(*) from (" + subQueryNativeSQL + ")");
long count = (long) q.getSingleResult();

共有1个答案

穆飞星
2023-03-14

jpaqueryjpqlquery都实现了projectable接口,并实现了count()方法-而且您不需要子查询

 类似资料:
  • 问题内容: 我的Web应用程序中有一个管理控制台,允许管理员在数据库上执行自定义SQL SELECT查询。 在下面,该应用程序正在使用Hibernate,但是这些查询不是HQL,它们是纯SQL,因此我使用的是本机查询,如下所示: 这可以正常工作,但是它只返回数据行,没有额外的信息。我还想获取列名,因此当我将结果打印回用户时,我还可以打印标题以显示各个列。 有什么办法吗? 问题答案: 经过很长一段时

  • 因此,我想在我的spring应用程序中使用JPAQuery进行过滤,但这一行: 是投掷: java.lang.NoClassDefFoundError: com/谷歌/共同/收集/多地图 原因:java。lang.ClassNotFoundException:com。谷歌。常见的收集java的Multimap。基本/jdk。内部的装载机。内置ClassLoader。java上的loadClass(

  • 问题内容: 我一直在尝试使用nativescript创建一个android应用程序。我正在使用fetch模块从服务器获取响应。当我尝试从 **httpbin.org/get 获取响应时,可以。但是当我尝试获取响应时从我的本地服务器上,我收到 网络请求失败。** 错误。 发送到httpbin.org/get- 发送到localhost:8000 / api- 当我尝试通过请求模块在纯node.js中

  • 问题内容: 获取我的本地主机IP地址。但这给了我答案。如果我知道的话。 我需要我的“真实” IP地址(例如192.168.xx)来修改配置文件。我怎么能得到? 问题答案: 我通常使用以下代码: 我不知道它的起源,但是它可以在Linux / Windows上运行。

  • 问题内容: 我正在使用大型词典,由于某种原因,我还需要处理该词典中的少量随机样本。如何获得这个小样本(例如长度为2的样本)? 这是一个玩具模型: 我需要对dy执行一些涉及所有条目的任务。让我们说,为了简化,我需要将所有值加起来: 现在,我还需要对dy的随机样本执行相同的任务;为此,我需要dy键的随机样本。我能想到的简单解决方案是 这样,我就有了字典的两个键的列表,它们是随机的。因此,回到may任务

  • 问题内容: 我有一个生成事实的简单应用。我想合并一个生成随机事实而不是递减的函数。 我的数组看起来像这样。 问题答案: 使用随机类。该类有一个方法,(doc)和引号: 返回一个伪随机数,它从此随机数生成器的序列中提取,在0(含)和指定值(不含)之间均匀分布的int值。nextInt的一般约定是伪随机生成并返回指定范围内的一个int值。所有n个可能的int值均以(近似)相等的概率产生。 因此,您需要