Java 使用HQL(Hibernate查询语言)转换查询Oracle

Java 使用HQL(Hibernate查询语言)转换查询Oracle,java,oracle,hibernate,hql,Java,Oracle,Hibernate,Hql,我有这个针对Oracle的查询,必须用HQL(Hibernate查询语言)进行转换。我还没有找到有关转换关键字的信息,如“开始于”或“通过之前的连接”或“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.NOM

我有这个针对Oracle的查询,必须用HQL(Hibernate查询语言)进行转换。我还没有找到有关转换关键字的信息,如“开始于”或“通过之前的连接”或“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

非常感谢

我尝试使用本机查询

我使用SpringBoot,我有一个控制器、一个服务和一个存储库。 在我的存储库中,我实现了如下本机查询:

String QUERY = " SELECT s.CMU, s.NOME, a.PADRE, LEVEL "
             + " FROM STRUTTURE s LEFT JOIN ALBERO a ON s.CMU = a.CMU "
             + " START WITH a.PADRE = '00000' "
             + " CONNECT BY PRIOR a.CMU = a.PADRE "
             + " ORDER SIBLINGS BY a.PADRE";
@Query(nativeQuery = true, value = QUERY)
public List<Struttura> findAllWithConnectBy();
String QUERY=“选择s.CMU、s.NOME、a.PADRE、LEVEL”
+“从结构s左连接s.CMU=a.CMU上的ALBERO a”
+“以a.PADRE='00000'开头”
+“通过先前的a.CMU=a.PADRE连接”
+“a.PADRE命令兄弟姐妹”;
@查询(nativeQuery=true,value=Query)
公共列表findAllWithConnectBy();
但我有一个错误:

org.springframework.beans.factory.BeanCreationNotAllowedException:创建名为“strutturaController”的bean时出错:当此工厂的单例正在销毁时,不允许创建单例bean(不要在销毁方法实现中从BeanFactory请求bean!)


这看起来是一个递归的分层查询。我很确定HQL根本不支持这种语法。最简单的方法可能是通过Java中的存储过程调用当前的Oracle调用。正确的ORM就是一切:为什么要尝试将其转换为HQL?只需使用Hibernate将其作为本机查询执行即可。