我想使用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
我实际上有两张以上的桌子,但我一直有IllegalArgumentException
(unexpected end of subtree
)。
工作原生Oracle基本上以FROM dual
结束。
我应该使用什么HQL查询来获取我想要的总行数?
答案 0 :(得分:1)
首先,如果您有一个有效的SQL查询,为什么不使用它而不是尝试将其转换为HQL?由于您首先返回单个标量,因此您不需要HQL提供的任何内容(例如,依赖实体等等)
其次,你在Hibernate中有'双重'映射吗? :-)如果没有,你究竟打算如何翻译它?
那就是说,“意外结束子树”错误通常是由Hibernate的AST解析器的特性引起的。常用的解决方法是在表达式前加上'0 +':
select 0 + (
... nested select #1 ...
) + (
... nested select #2 ...
) as total
from <from what exactly?>