请告诉我如何在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答案。
我只是想避免两次往返数据库,想一次获得总和。也许没有本地查询就不可能吗?预先感谢。
答案 0 :(得分:1)
像许多SQL方言一样,HQL具有强制性的FROM
子句,但它没有提供开箱即用的哑表或DUAL
表。但是对于您而言,您可以通过运行以下查询来解决此限制:
select count(id) + (select count(id) from c_acc_map) as c
from c_cat_map