Java 使用HQL(Hibernate查询语言)转换查询Oracle
我有这个针对Oracle的查询,必须用HQL(Hibernate查询语言)进行转换。我还没有找到有关转换关键字的信息,如“开始于”或“通过之前的连接”或“SINBLINGS”。 你能帮我吗 问题是: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
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将其作为本机查询执行即可。