来自多个表的HQL计数

时间:2011-10-18 17:29:56

标签: sql hibernate hql

我想使用HQL查询查询我的数据库,以检索MY_DATE大于SOME_DATE的行总数。

到目前为止,我已经提出了一个本机Oracle查询来获得该结果,但在使用HQL编写时我陷入困境:

SELECT
    (
     SELECT COUNT(MY_DATE) 
     FROM Table1 
     WHERE MY_DATE >= TO_DATE('2011-09-07','yyyy-MM-dd') 
    ) 
    + 
    (
     SELECT COUNT(MY_DATE) 
     FROM Table2 
     WHERE MY_DATE >= TO_DATE('2011-09-07','yyyy-MM-dd')
    ) 
AS total

我实际上有两张以上的桌子,但我一直有IllegalArgumentExceptionunexpected end of subtree)。

工作原生Oracle基本上以FROM dual结束。

我应该使用什么HQL查询来获取我想要的总行数?

1 个答案:

答案 0 :(得分:1)

首先,如果您有一个有效的SQL查询,为什么不使用它而不是尝试将其转换为HQL?由于您首先返回单个标量,因此您不需要HQL提供的任何内容(例如,依赖实体等等)

其次,你在Hibernate中有'双重'映射吗? :-)如果没有,你究竟打算如何翻译它?

那就是说,“意外结束子树”错误通常是由Hibernate的AST解析器的特性引起的。常用的解决方法是在表达式前加上'0 +':

select 0 + (
   ... nested select #1 ... 
       ) + (
   ... nested select #2 ... 
       ) as total
  from <from what exactly?>