【发布时间】:2023-03-10 18:35:01
【问题描述】:
我有这个 Oracle 查询,我必须转换成 HQL(休眠查询语言)。我还没有找到有关转换关键字的信息,例如“START WITH”或“CONNECT BY PRIOR”或“SINBLINGS”。 你能帮帮我吗?
查询是这样的:
SELECT NOME_PADRE, COD_PADRE, NOME_FIGLIO, COD_FIGLIO,
CONFIRM_COD_FIGLIO, LEVEL
FROM (
SELECT s1.NOME AS NOME_PADRE, a.PADRE AS COD_PADRE, s2.NOME AS
NOME_FIGLIO, a.CMU AS COD_FIGLIO, s2.CMU AS
CONFIRM_COD_FIGLIO
FROM ALBERO a JOIN STRUTTURE s1 ON a.PADRE = s1.CMU
JOIN STRUTTURE s2 ON a.CMU = s2.CMU
ORDER BY PADRE ASC
)
START WITH COD_PADRE = '00000'
CONNECT BY PRIOR COD_FIGLIO = COD_PADRE
ORDER SIBLINGS BY COD_PADRE
非常感谢
【问题讨论】:
-
这看起来是一个递归分层查询。我很确定 HQL 根本不支持这种语法。最不痛苦的事情可能是通过 Java 中的存储过程调用您当前的 Oracle 调用。
-
为什么要尝试将其转换为 HQL?只需使用 Hibernate 将其作为本机查询执行即可。