使用Hibernate HQL 5将两个计数查询的结果相加

时间:2019-04-11 14:54:32

标签: hibernate hql jpql

请告诉我如何在HQL中请求两个计数的和,以便Hibernate可以解析和执行。 Mysql接受以下内容,但我想避免使用本机SQL:

select ( (select count(id) from c_cat_map) + (select count(id) from c_acc_map) ) as c;

但是,来自Hibernate 5.3.9的HQL解析器通过以下方式拒绝了此请求:

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected end of subtree 

这是与2012年发布的帖子相同的问题,但是从那时起,休眠状态发生了很大变化,因此请原谅几乎重复的内容:How to select the sum of multiple count() selections in JPQL

How to write a query in hibernate for count(*) and + (addition)基本相同,但是没有HQL答案。

我只是想避免两次往返数据库,想一次获得总和。也许没有本地查询就不可能吗?预先感谢。

1 个答案:

答案 0 :(得分:1)

像许多SQL方言一样,HQL具有强制性的FROM子句,但它没有提供开箱即用的哑表或DUAL表。但是对于您而言,您可以通过运行以下查询来解决此限制:

select count(id) + (select count(id) from c_acc_map) as c
from c_cat_map